Урок 27 - Создаем игру Ping-pong - часть(3/3)
Мы продолжаем простенькую игру "Пинг-Понг". Сделаем искусственный интеллект.
Перейдем на вкладку Additional и вытащим третий Shape - это наш противник. Придадим ему ту же форму, что и у нас.
Противник должен отбивать шарик и не давать ему ударится о левую границу формы. Но как нам забить противнику, если он постоянно
отбивает мяч, неважно с какой скоростью он летит. Нужно замедлить реакцию противника.
Вытащим на форму еще один таймер и сделаем интервал меньше чем у первого таймера, например 16 мс. В обработчике события мы запишем код:
procedure TForm1.Timer2Timer(Sender: TObject); begin if Shape3.Top > ClientHeight - Shape3.Height - 40 then //Не пускаем врага Shape3.Top:= Shape3.Top //за нижний край формы else begin if Shape1.Top > Shape3.Top then // если шарик ниже противника Shape3.Top:= Shape1.Top + Shape3.Width; //то отпускаем его end; if Shape1.Top < Shape3.Top then // поднимаем если шарик выше Shape3.Top:= Shape1.Top - Shape3.Width; end;Проверим, да, враг ожил, но он не отбивает мяч, нужно в первом таймере дописать проверку столкновения с шарика с противником, все что нам нужно это скопировать условие проверяющие столкновение шарика с игроком и заменить Rect игрока на противника и сменить знаки т.к. отскакивают шарик будет в противоположную сторону:
if InterSectRect(Overlay, Shape3.BoundsRect, Shape1.BoundsRect) then begin VelX:= -VelX + Random(5); VelY:= -VelY + Random(5); end;
Ну вот и все мы написали простенькую игру. Удачи!
Встретимся в следующем уроке!
Добавил(а): chasovitin | Дата: 2014-05-26 | |
|
Добавил(а): Vetal_Pr0 | Дата: 2014-12-05 | |
Получилось, игра удалась
Как сделать, чтоб можно было двигать синий прямоугольник по X( для другой игры нужно). Пробовал переделать этот код: Shape2.Top:= Mouse.CursorPos.Y - Form1.ClientOrigin.Y; под X и вместо Top Width ставил не помогло.
|
Добавил(а): norka | Дата: 2015-12-28 | |
спасибки))
|
Добавил(а): Bek1996 | Дата: 2016-02-10 | |
продолжение не будет? как сделать когда мяч попадает на край, должен появится сообщение что вы проиграли
|
No results found.