Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 8: Программирование на Visual C# искусственного интеллекта. Издание 2. Продолжение 1. Валерий Алексеевич Жарков
80, Color.Black, Color.Yellow, messageFont, g);
break;
case GameMode.Push:
dealerHand.DrawHand(g, 10, 30, 20, 25);
playerHand.DrawHand(g, 10, 135, 20, 25);
Utilities.BigText(dealerHand.BlackJackScoreHand().
ToString(), 140, 45, Color.Black,
Color.Yellow, messageFont, g);
Utilities.BigText(playerHand.BlackJackScoreHand().
ToString(), 140, 150, Color.Black,
Color.Yellow, messageFont, g);
Utilities.BigText("Вы выиграли.",
20, 80, Color.Black, Color.Yellow, messageFont, g);
break;
}
}
void playerHits()
{
if (playerHand.BlackJackScoreHand() < 21)
{
playerHand.Add(shoe.DealCard());
if (playerHand.BlackJackScoreHand() > 21)
{
//We write in the original:
pot.DoPlaceBet();
pot.HouseWins();
showPot();
mode = GameMode.PlayerBust;
}
this.Invalidate();
}
}
void playerStays()
{
dealerHoleCard.FaceUp = true;
mode = GameMode.DealerActive;
this.Refresh();
System.Threading.Thread.Sleep(750);
while (dealerHand.BlackJackScoreHand() < 17)
{
dealerHand.Add(shoe.DealCard());
this.Refresh();
System.Threading.Thread.Sleep(750);
}
if (dealerHand.BlackJackScoreHand() > 21)
{
mode = GameMode.DealerBust;
pot.PlayerWins();
showPot();
return;
}
if (playerHand.BlackJackScoreHand() >
dealerHand.BlackJackScoreHand())
{
mode = GameMode.PlayerWon;
pot.PlayerWins();
showPot();
return;
}
if (playerHand.BlackJackScoreHand() <
dealerHand.BlackJackScoreHand())
{
mode = GameMode.DealerWon;
//We write in the original:
pot.DoPlaceBet();
pot.HouseWins();
showPot();
return;
}
if (playerHand.BlackJackScoreHand() ==
dealerHand.BlackJackScoreHand())
{
mode = GameMode.Push;
pot.DoPushBet();
showPot();
return;
}
}
void doLeftMenuKey()
{
switch (mode)
{
case GameMode.LoadingDisplay:
break;
case GameMode.PlacingBets:
startPlay();
break;
case GameMode.PlayerActive:
playerStays();
break;
case GameMode.PocketJack:
case GameMode.PlayerWon:
case GameMode.PlayerBust:
case GameMode.DealerActive:
case GameMode.DealerWon:
case GameMode.DealerBust:
case GameMode.Push:
startHand();
break;
}
}
void doEnter()
{
switch (mode)
{
case GameMode.LoadingDisplay:
break;
case GameMode.PlacingBets:
startPlay();
break;
case GameMode.PlayerActive:
playerHits();
break;
case GameMode.PocketJack:
case GameMode.PlayerWon:
case GameMode.PlayerBust:
case GameMode.DealerActive:
case GameMode.DealerWon:
case GameMode.DealerBust:
case GameMode.Push:
startHand();
break;
}
}
void doUp()
{
switch (mode)
{
case GameMode.PlacingBets:
pot.DoIncreaseBet();
showPot();
this.Invalidate();
break;
}
}
void doDown()
{
switch (mode)
{
case GameMode.PlacingBets:
pot.DoDecreaseBet();
showPot();
this.Invalidate();
break;
}
}
void showHelp()
{
helpForm.ShowDialog();
}
В панели Properties (для Form1) на вкладке Events дважды щёлкаем по имени события Load. Появившийся шаблон метода Form1_Load после записи нашего кода принимает следующий вид.
Листинг 1.2. Метод для загрузки файлов объектов.
private void Form1_Load(object sender, EventArgs e)
{
//We load the game objects:
init();
startGame();
}
В