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

Шрифт
Интервал


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 очко за забитый гол.