Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 3
Всего онлайн: 3
Зарегистрировано юзеров: 6362
Комментариев на сайте: 645
Новый юзер: Pseulairrerve



Последние комментарии
c
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
GZip псевдоархив, на мой вопрос тоже не отвечают, как распаковать отдельные файлы/папки...
Pingitrus прокомментировал "Урок 71 - Работа с сжатыми файлами":
Есть еще кто нибудь живой на этом сайте, кто сможет помочь? Так то все работает, zip и rar распаковывает, но у меня есть файл dat который сжат GZip, почему то его не удается распаковать или так не получится так как этот файл не является архивом или является?)) пишет ошибку что неверная функция



Мы в соцсетях
c
Delphi
Урок 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;


Ну вот и все мы написали простенькую игру. Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 21 Апреля 2013
Просмотров: 36446

Создаем игру Ping-pong - часть(2/3)

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



аватар Добавил(а): 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
продолжение не будет? как сделать когда мяч попадает на край, должен появится сообщение что вы проиграли