Читаем Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 10: Программирование на Visual C# искусственного интеллекта. Издание 3. Продолжение 1 полностью

Состояние игры (game state) также управляет рисованием, когда вызывается событие Paint, как показано в следующем коде:

void paintForm(Graphics g)

{

switch (mode)

{

case GameMode.PlayerActive:

dealerHand.DrawHand(g, 10, 30, 80, 25);

playerHand.DrawHand(g, 10, 135, 20, 25);

Utilities.BigText(playerHand.BlackJackScoreHand.

ToString, 140, 150, Color.Black,

Color.Yellow, messageFont, g);

break;

Этот код с методом Paint показывает, как приложение управляет выводом сообщений и карт. Очки банкомёта не появляются, когда игрок набирает карты.

1.11. Набор карт банкомётом

Банкомёт (dealer) должен получить две карты, одна из которых появляется лицевой стороной вниз (face down). Мы достигаем этого при использовании следующего кода:

// clear the hands

playerHand.Clear;

dealerHand.Clear;

// deal the face down hole card

dealerHoleCard = shoe.DealCard;

dealerHoleCard.FaceUp = false;

dealerHand.Add(dealerHoleCard);

// deal the first player card

playerHand.Add(shoe.DealCard);

// deal the second dealer card (face up)

dealerHand.Add(shoe.DealCard);

// deal the second player card

playerHand.Add(shoe.DealCard);

mode = GameMode.PlayerActive;

Приложение сохраняет ссылку на "тайную – hole" карту банкомёта, которая инициализируется лицевой стороной вниз, когда начинается набор карт. Это достигается заданием свойству FaceUp (Лицевая сторона вверх) значения, равное False. Когда экран будет перерисовываться, будет нарисована также и обратная сторона "тайной – hole" карты банкомёта. Когда банкомёт начинает набор карт, свойству FaceUp (Лицевая сторона вверх) задаётся значение True, и изображение на лицевой стороне карты становится видимым. Отметим, что изменение режима (mode) внизу приведённого кода переводит игру в активное состояние, когда игрок готов принять участие в игре.

Приложение сдаёт карты в том же самом порядке, как в реальной игре с банкомётом и игроком, по очереди берущими карты. Нет никакой программируемой причины для замены между банкомётом и игроком, но в реальной игре проще "расположить в стеке" колоду, если сдача карт не чередуется.

1.12. Набор карт игроком

Приложение содержит метод, который вызывается, когда игрок хочет набрать себе карты. Он получает дополнительную карту, только если счёт – меньше 21, как показано в следующем коде:


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;

}

}

Если счёт игрока превышает 21, игрок совершил перебор карт (the player busts), и состояние игры изменяется, чтобы отобразить это. Иначе, экран обновляется, что вызывает перерисовку и добавление на экран новой карты.

Когда игрок достиг счёта, которым он доволен, игрок может приостановить (stay) набор новой карты, как показано в следующем коде:

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;

//Мы дописываем в оригинале:

pot.DoPlaceBet;

pot.HouseWins;

showPot;

return;

}

if (playerHand.BlackJackScoreHand ==

dealerHand.BlackJackScoreHand)

{

mode = GameMode.Push;

pot.DoPushBet;

showPot;

return;

}

}

Этот метод должен изменить игровое состояние на DealerActive и затем закончить набор карт банкомётом. Он также переворачивает тайную карту банкомёта лицом вверх, чтобы эту карту можно было увидеть. Игра банкомёта организована по циклу, который неоднократно даёт новые карты банкомёту, если счёт банкомёта меньше 17. Банкомёт обязан запускать игру этим механистическим способом. Приложение содержит паузу на 750 миллисекунд между каждой картой банкомёта, чтобы добавить волнение в игру (в этой паузе также звучит тревожная музыка). Вызов метода Refresh гарантирует, что игрок информирован относительно каждой последующей карты банкомёта.

Если банкомёт получает счёт, больше 21, состояние изменено на DealerBust (Банкомёт перебрал карты), и выполнение метода заканчивается. Иначе, метод решает, кто выиграл и устанавливает соответствующее состояние игры. Тогда игрок может выбрать команду “new game” для начала новой игры, которая снова устанавливает “руки” игрока и банкомёта и соответствующее состояние игры.

1.13. Контекстно-зависимый пользовательский интерфейс

Перейти на страницу:

Похожие книги

ЕГЭ-2024. История. 16 тематических вариантов. ЕГЭ близко. 862-2020 гг
ЕГЭ-2024. История. 16 тематических вариантов. ЕГЭ близко. 862-2020 гг

Сборник соответствует 3 требованиям:Задания в сборнике тематические, т.е. соответствуют той или иной теме по хронологии. Выдержать это требование было очень сложно, но именно такие задания наиболее полезны для начинающих.Задания соответствуют формату ЕГЭ, насколько это возможно, учитывая п. 1. Например, в каждом варианте ЕГЭ должны быть задания про ВОВ. Но зачем выполнять их человеку, который только начал проходить Древнюю Русь? Поэтому мы заменили эти задания на те, которые соответствуют периоду, но тоже будут полезны для практики. Зато общая нагрузка при выполнении варианта будет сопоставима с тем, что будет на реальном экзамене, и ты сможешь реально оценивать свои силы.Задания примерно соответствуют ЕГЭ по уровню сложности. Конечно это понятие растяжимое, но мы постарались соблюсти баланс.В этом сборнике представлены 16 вариантов заданий по периодам с древности до наших дней.

Анатолий Анатольевич Сухарев , Виктория Александровна Юршина

Школьные учебники / Образование и наука
Книга-тетрадь для занимательного чтения 2 класс
Книга-тетрадь для занимательного чтения 2 класс

Данное пособие содержит в себе не только тексты для чтения, но и краткую биографию авторов, а также задания для лучшего понимания и усвоения прочитанного. Все задания нацелены на заинтересованность к чтению, на повышение активности и разностороннего восприятия текста. В пособии предлагаются разнообразные по содержанию, форме и степени сложности задания к произведениям. Задания книги-тетради направлены на выработку умения самостоятельно анализировать прочитанное. Все вопросы и задания, предлагаемые в данном пособии, будут активизировать познавательный интерес и повышать сознательность чтения. В пособии подобраны произведения казахстанских, русских и зарубежных писателей. А также раздел устного народного творчества. Пособие может быть использовано учителями начальных классов для индивидуальной работы с учащимися. А также родителям, желающим помочь своим детям в освоении самостоятельного грамотного чтения.

Людмила Ивановна Гангаева , Мария Григорьевна Алексеева

Школьные учебники / Образование и наука