Чтение онлайн

на главную - закладки

Жанры

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

а переменная images – имя папки, в которой имеется графический файл loading.gif.

После запуска игры, рисунок загрузки loading.gif появляется в середине экрана и находится на экране все время загрузки игровых компонентов, как определено в следующем коде:

void paintForm(Graphics g)

{

switch (mode)

{

case GameMode.LoadingDisplay:

//We draw all images below the menu:

g.DrawImage(

bankImage, 0, StayToolStripMenuItem.Height);

g.DrawImage(

loadingImage, 0, StayToolStripMenuItem.Height + 60);

break;

case GameMode.PlacingBets:

g.DrawImage(bankImage, 0, StayToolStripMenuItem.Height);

Utilities.BigText("Bank : " + pot.PotValue.ToString,

10, 40, Color.Black,

Color.Yellow, messageFont, g);

Utilities.BigText("Bet : " +

pot.BetValue.ToString, 10, 80, Color.Black,

Color.Yellow, messageFont, g);

break;

На

рис. 1.9 показан узкий слева – направо рисунок загрузки loading.gif с надписью “POCKET JACK LOADING” поверх фона игры в виде файла bank.jpg. Этот рисунок держится на экране всего несколько секунд, пока не загрузятся все графические и звуковые файлы, а затем исчезает, уступая место информации о размерах Банка и Ставки, показанных на следующем рисунке.

Рис. 1.9. Рисунок загрузки loading.gif

Разработку звукового сопровождения игры мы опишем далее при написании программы, а сейчас перейдём к правилам игры.

1.17. Правила игры

Сформулируем правила данной компьютерной карточной (из 52 карт) игры в очко, которые далее будут также записаны в справочную форму Form2, выводимую после выбора команды Помощь из меню элемента управления MenuStrip на главной форме Form1.

1. Мы (пользователи) считаемся как один игрок и играем один на один с компьютером-банкомётом.

2. Мы устанавливаем в Банке начальную сумму денег, например, 500 долларов и определяем Ставку в игре, равную, например, 5 долларам. В каждой сдаче карт наш выигрыш будет увеличивать Банк, а проигрыш – уменьшать Банк на величину Ставки.

По окончании игры, если Банк будет больше 500, то мы выиграли у Банкомёта разницу между итоговым значением Банка и начальным значением Банка в 500 долларов.

Если же по окончании игры Банк будет меньше 500, то мы проиграли Банкомёту разницу между начальным значением Банка в 500 долларов и итоговым значением Банка.

Естественно, по методике данной главы в приводимом далее проекте мы можем запрограммировать другие варианты Банка, Ставки и условий игры.

3. В данном варианте игры, наша цель состоит в том, чтобы на экране набрать “в руку” карты с очками, как можно ближе к 21, но не превышая 21, и, к тому же, больше, чем у банкомёта. На экране сначала мы видим вверху карту банкомёта, а внизу – две наши карты с очками этих карт.

4. После запуска игры на форме появляются команда Себе и команда общего Меню (рис. 1.10), приведённый выше рисунок loading.gif, а затем фон игры в виде приведённого выше изображения bank.jpg и начальный счёт игры:

Банк: 500 Ставка: 5

Рис. 1.10. Исходное состояние (заставка) игры. Рис. 1.11. Команда “Ставка +” в Меню.

Если мы желаем изменить значение Ставки, то при помощи мыши раскрываем Меню элемента управления MenuStrip, в котором выбираем команду “Ставка +” или “Ставка -” (рис. 1.11) . Это меню закрывается после его повторного выбора. Значения Банка и Ставки можно также изменить в приведённой далее программе. Для примера, оставляем заданные по умолчанию значения Банка и Ставки. Никаких игровых действий пока не производится.

5. Для начала игры нажимаем клавишу Enter.

В верхней части экрана (как свойство Text формы Form1) появляются начальные значения Банка и Ставки (рис. 1.12): Банк: 500 Ставка: 5

В верхней половине экрана появляется одна закрытая и одна открытая карта банкомёта, а в нижней – две карты игрока с очками этих карт (рис. 1.12). Звучит сопровождение в виде файла pj_bg_noise.wav тревожного шума окружающих игрока и банкомёта групп поддержки.

6. У нас два варианта действий. Видя наши исходные очки и очки банкомёта, либо,

по первому варианту, при помощи клавиши Enter (или команды “Карту мне” из Меню, см. предыдущий рисунок) нам взять следующую карту,

либо, по второму варианту, при помощи мыши выбрать в Меню команду Себе (попросить банкомёт брать карты себе).

Рис. 1.12. Карта банкомёта и две карты игрока. Рис. 1.13. Счёт игры изменился.

Мы помним (из предыдущего описания), что банкомёт будет набирать карты себе до тех пор, пока у него не наберётся ровно 17 или более очков. А у нас уже 14 очков. Конечно, можно дать команду Банкомёту брать карты себе (в надежде на перебор карт у него). Но мы решаемся, и при помощи клавиши Enter берём следующую карту. Но, увы, к нам пришла не та карта, и мы видим грустное сообщение “Вы перебрали” с итоговыми нашими очками 22 (рис. 1.13). Звучит недовольство с помощью звукового файла pj_busted.wav. В верхней части экрана Банк уменьшается на величину Ставки, и счёт игры становится не в нашу пользу таким:

Банк: 495 Ставка: 5

7. Для осуществления нового набора карт мы можем выбрать команду “Сдача карт” (при помощи мыши) или нажать клавишу Enter.

Нажимаем клавишу Enter.

Появляется фон игры в виде приведённого выше изображения bank.jpg и новый счёт игры не только в верхней части экрана (как свойство Text формы Form1), но и в центральной части экрана в виде крупного изображения, нарисованного методом DrawString (рис. 1.14):

Банк: 495 Ставка: 5

Так продолжается игра. Например, в середине игры нажимаем клавишу Enter. Появляются очередные начальные наборы карт у нас и Банкомёта (рис. 1.15).

8. У нас те же два варианта действий. Видя наши исходные очки и очки банкомёта, либо,

по первому варианту, при помощи клавиши Enter нам взять следующую карту,

либо, по второму варианту, при помощи мыши выбрать в Меню команду “Take a card to yourself” (попросить банкомёт брать карты себе).

Мы помним (из предыдущего описания), что банкомёт будет набирать карты себе до тех пор, пока у него не наберётся ровно 17 или более очков.

А у нас теперь всего 9 очков. Поэтому при помощи клавиши Enter смело берём следующую карту. К нам пришла пятёрка, появилось количество очков 14 наших карт (рис. 1.16).

Поделиться:
Популярные книги

Жестокая свадьба

Тоцка Тала
Любовные романы:
современные любовные романы
4.87
рейтинг книги
Жестокая свадьба

Вернуть невесту. Ловушка для попаданки

Ардова Алиса
1. Вернуть невесту
Любовные романы:
любовно-фантастические романы
8.49
рейтинг книги
Вернуть невесту. Ловушка для попаданки

Дарующая счастье

Рем Терин
Любовные романы:
любовно-фантастические романы
6.96
рейтинг книги
Дарующая счастье

Назад в СССР 5

Дамиров Рафаэль
5. Курсант
Фантастика:
попаданцы
альтернативная история
6.64
рейтинг книги
Назад в СССР 5

Утопающий во лжи 3

Жуковский Лев
3. Утопающий во лжи
Фантастика:
фэнтези
рпг
5.00
рейтинг книги
Утопающий во лжи 3

Средневековая история. Тетралогия

Гончарова Галина Дмитриевна
Средневековая история
Фантастика:
фэнтези
попаданцы
9.16
рейтинг книги
Средневековая история. Тетралогия

В тени большого взрыва 1977

Арх Максим
9. Регрессор в СССР
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
В тени большого взрыва 1977

Неожиданный наследник

Яманов Александр
1. Царь Иоанн Кровавый
Приключения:
исторические приключения
5.00
рейтинг книги
Неожиданный наследник

Вторая невеста Драконьего Лорда. Дилогия

Огненная Любовь
Вторая невеста Драконьего Лорда
Любовные романы:
любовно-фантастические романы
5.60
рейтинг книги
Вторая невеста Драконьего Лорда. Дилогия

Кодекс Охотника. Книга XXIII

Винокуров Юрий
23. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXIII

Неудержимый. Книга II

Боярский Андрей
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга II

Искатель. Второй пояс

Игнатов Михаил Павлович
7. Путь
Фантастика:
фэнтези
боевая фантастика
6.11
рейтинг книги
Искатель. Второй пояс

Совок 5

Агарев Вадим
5. Совок
Фантастика:
детективная фантастика
попаданцы
альтернативная история
6.20
рейтинг книги
Совок 5

Элита элит

Злотников Роман Валерьевич
1. Элита элит
Фантастика:
боевая фантастика
8.93
рейтинг книги
Элита элит