Оценить:
 Рейтинг: 0

Справочник Жаркова по проектированию и программированию искусственного интеллекта. Том 2: Программирование на Visual C# искусственного интеллекта (продолжение 1)

Год написания книги
2022
<< 1 ... 13 14 15 16 17
На страницу:
17 из 17
Настройки чтения
Размер шрифта
Высота строк
Поля
После этого добавления в панели Solution Explorer появляется этот файл, как показано выше. Дважды щёлкая в SE по имени файла, любой файл можно открыть, изучить и редактировать.

12.5. Запуск игры

Строим и запускаем программу на выполнение обычным образом:

Build, Build Selection; Debug, Start Without Debugging.

В ответ Visual C# выводит форму Form1 с показанным выше полем игры из кружочков (ноликов).

Далее мы играем с компьютером в крестики-нолики согласно приведённым выше правилам.

По методике данной главы можно разрабатывать самые разнообразные игры в крестики-нолики, однако при следующем условии.

Часть IV. Методология программирования искусственного интеллекта в спортивных играх на примере игры в теннис для Игрока с Компьютером или двух Игроков

Глава 13. Методика программирования искусственного интеллекта в игре в теннис на основе элементов управления на одной форме

13.1. Общие сведения

Разработаем методику проектирования и программирования типичной и широко распространённой игры в теннис с мячом и двумя ракетками. Если в предыдущей книге (с сайта ZharkovPress.ru) игру в теннис мы разработали на основе графических файлов, то в данной главе эту же игру разработаем на основе стандартных элементов управления с панели инструментов Toolbox, следуя проекту [см. Список литературы: Game Tiny Tennis from the website of Microsoft corporation], но с нашими усовершенствованиями для современной версии Visual Studio.

Кратко, сюжет игры заключается в следующем. После старта игры появляется форма Form1, слева на форме (точнее, в клиенткой области формы) находится ракетка Игрока 1, справа – ракетка Игрока 2 (по первому режиму игры) или Компьютера в роли Игрока 2 (по второму режиму игры). Мяч произвольным образом прыгает в пределах 4-х границ формы, отскакивая от верхней и нижней границ формы и двух ракеток. Левая граница формы – это ворота Игрока 1, а правая граница формы – это ворота Компьютера в роли Игрока 2 или самого Игрока 2. Если мяч коснётся левой или правой границ формы, считается, что один игрок забил мяч в ворота другого игрока, счёт увеличивается в пользу забившего мяч игрока, а мяч снова появляется в произвольной точке формы и летит в произвольном направлении, заданном генератором случайных числе класса Random.

В задачу пользователя в роли Игрока 2 (по первому режиму игры, заданному по умолчанию) входит – при помощи клавиш со стрелками перемещать правую ракетку по вертикали снизу вверх и сверху вниз таким образом, чтобы отбить мяч и не дать мячу коснуться правой границы формы, так как после каждого такого касания (пропущенного в ворота мяча) Игроку 1 начисляется 1 очко. Пользователь в роли Игрока 2 должен стараться (по возможности) ракеткой отбить мяч таким образом, чтобы забить его в ворота Игрока 1.

Левая ракетка Игрока 1 старается отбить мяч и не дать мячу коснуться левой границы формы, так как после каждого такого касания (пропущенного в ворота мяча) Компьютеру в роли Игрока 2 начисляется 1 очко (как забившему мяч).

Таким образом, для заданного по умолчанию первого режима игры (Игрок 1 против пользователя в роли Игрока 2), в методе-конструкторе Form1 используется строка:

_player2 = new Bat (pictureBox2, ClientSize. Width – 30 —

Bat. Width, Keys. Up, Keys.Down, 0, ClientSize. Height);

Видно, что пользователь (Игрок 2) перемещает ракетку вверх при помощи клавиши Keys. Up, а вниз – Keys.Down.

По второму режиму игры (Игрок 1 против Компьютера в роли Игрока 2), в методе-конструкторе Form1 комментируем приведённую выше строку и раскомментируем строку:

_player2 = new Bat (pictureBox2, ClientSize. Width – 30 —

Bat. Width, 0, ClientSize. Height);

Теперь Компьютер (в роли Игрока 2) будет перемещать правую ракетку по вертикали снизу вверх и сверху вниз и отбивать ракеткой мяч, чтобы не пропустить его мимо ракетки в правые ворота.

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

В данной игре также была поставлена и решена математическая задача о перемещении объекта в замкнутом пространстве, сформулированная в предыдущей главе с большим количеством допущений.

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

1. После запуска игры появляется форма Form1, на клиентской области которой слева находится ракетка Игрока 1, справа – ракетка Игрока 2 (по первому режиму игры) или Компьютера в роли Игрока 2 (по второму режиму игры). Вверху находится табло для подсчёта очков (в виде двух элементов управления Label); в начале игры счёт 0:0, рис. 13.1.

Две ракетки и мяч разработаны на основе элемента управления PictureBox.

Мяч произвольным образом прыгает в пределах 4-х границ формы, отскакивая от границ формы и двух ракеток. После каждого такого отскока мы слышим звук добавленного в проект файла beep. wav. Левая граница формы – это ворота Игрока 1, а правая граница формы – это ворота Игрока 2 (или Компьютера в роли Игрока 2).

Рис. 13.1. Перед началом игры (слева – ракетка Игрока 1, справа – ракетка Игрока 2).

2. В задачу пользователя в роли Игрока 2 (по первому режиму игры, заданному по умолчанию) входит – перемещать правую ракетку по вертикали снизу вверх и сверху вниз таким образом, чтобы отбить мяч и не дать мячу коснуться правой границы формы, так как после каждого такого касания (пропущенного в ворота мяча) Игроку 1 начисляется 1 очко за забитый гол. И Игрок 2, и Компьютер в роли Игрока 2 стараются ракеткой отбить мяч таким образом, чтобы забить его в ворота Игрока 1.

Левая ракетка Игрока 1 старается отбить мяч и не дать мячу коснуться левой границы формы, так как после каждого такого касания (пропущенного в ворота мяча) пользователю в роли Игрока 2 (или Компьютеру в роли Игрока 2) начисляется 1 очко за забитый гол.

На рис. 13.2 показан счёт 4:11 в пользу Игрока 2.

Рис. 13.2. Игра идёт, счёт 4:11 (слева – ракетка Игрока 1, справа – ракетка Игрока 2).

3. Победителем считается игрок, который за отведённое на игру время большее число раз поразил ворота соперника. Как правило, Компьютер (в роли Игрока 2) побеждает.

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

5. Форму с игрой закрываем стандартно, щёлкая на ней значок Close.

На основании этих правил можно сформулировать другие правила, и любые правила ввести в справочную форму, которую можно разработать по описанной ранее методике.

И, естественно, в качестве графических изображений объектов и звуковых файлов игры можно использовать различные элементы управления и файлы различных форматов (с внесением соответствующих изменений в приведённую далее программу).

13.3. Создание проекта

Создаём проект по обычной схеме: в VS в панели New Project (показанной выше) слева на вкладке Templates выбираем шаблон (тип проекта) Visual C#, Windows Classic Desktop и проверяем, чтобы в окне Templates был выделен (как правило, по умолчанию) шаблон Windows Forms App (.NET Framework); в окне Name записываем (или оставляем по умолчанию) имя проекта, например, TinyTennis и щёлкаем OK.

Создаётся проект, появляется форма Form1 в режиме проектирования (рис. 13.3 и рис. 13.4). Оставляем по умолчанию или проектируем форму, как подробно описано ранее в параграфе «Методика проектирования формы» в наших книгах с сайта ZharkovPress.ru. За маркеры увеличиваем размеры формы таким образом, чтобы в панели Properties в свойстве Size были, например, такие величины: 800; 559.


<< 1 ... 13 14 15 16 17
На страницу:
17 из 17