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


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



Последние комментарии
c
baxodir прокомментировал "Урок 23 - Функции для работы с мышью":
Но Это мало можно ещё больше
pronin106 прокомментировал "Урок 27 - Создаем игру Ping-pong - часть(2/3)":
Все получилось! Спасибо за урок. У кого не получилось читайте внимательнее! Не делайте тупо копипаст



Мы в соцсетях
c
Delphi
Урок 26 - Создаем игру Ping-pong - часть(1/3)

  Начинаем писать простенькую игру Пинг-Понг.

   Думаю, смысл игры Пинг-Понг давно всем известен :). Создание этой игры я разделю на 3 части: простое перемещение и рикошеты от граней формы, возможность отбивать шарик мышкой, искусственный интеллект (Противник).

   Итак все что нам понадобится - это компонент Shape на вкладке Additional. Вытаскиваем его на форму и меняем свойство Shape на stCircle, у нас вместо квадрата получился кружок.

шарик


  Для работы нам понадобятся 2 свойства: Left и Top, первое - это позиция по горизонтали в дальнейшем X, второе - по вертикали (Y).

   Приступим создадим 4 глобальных переменных типа Single: PosX, PosY, VelX, VelY. первые 2 переменных - это позиция по X и Y, остальное - скорость по X и Y.

   Создадим обработчик события Form1 OnCreate:
procedure TForm1.FormCreate(Sender: TObject);
begin
  PosX:= 30;  // Задаем           позицию
  PosY:= 50;  //        начальную 
  VelX:= 1;   // Задаем           скорость
  VelY:= 2;   //        начальную 
end;


   Если мы сейчас скомпилируем то ничего не будет, просто зададутся значения, нам нужно обновлять позицию шара через равные промежутки времени, с этой работой хорошо справится таймер. Вытащим его на форму, сразу установим интервал на 1 мс и в обработчике события напишем код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  PosX:= PosX + VelX;	// Изменяем 
  PosY:= PosY + VelY;	//  позицию

  Shape1.Left:= Round(PosX);  // Обновляем
  Shape1.Top:=  Round(PosY);  // положение шарика             
end; 


   Теперь наш шарик двигается, но он выходит за границы формы, модифицируем код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  PosX:= PosX + VelX;	// Изменяем 
  PosY:= PosY + VelY;	//  позицию

  if PosX > ClientWidth - Shape1.Width then  //если шарик коснется правого края то направим его в обратную сторону
    VelX:= -VelX;

  if PosY > ClientHeight - Shape1.Height then //если шарик коснется нижнего края то направим его в обратную сторону
    VelY:= -VelY;

  if PosX < 0 then		//если шарик левого правого края то направим его в обратную сторону
    VelX:= -VelX;

  if PosY < 0 then		//если шарик верхнего правого края то направим его в обратную сторону
    VelY:= -VelY;


  Shape1.Left:= Round(PosX);  // Обновляем
  Shape1.Top:=  Round(PosY);  // положение шарика 
end;


   Ну вот все прекрасно работает!

Удачи!
Встретимся в следующем уроке!


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

Урок 25 - Подробное изучение RichEdit'a Урок 27 - Создаем игру Ping-pong - часть(2/3)

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



аватар Добавил(а): Best-haker [Новичок] Дата: 2014-09-17
спасибо сайт еще жив?




аватар Добавил(а): Exotic [Новичок] Дата: 2014-10-15
Что понимается под живностью?




аватар Добавил: hess2222 [Новичок] Дата: 2015-05-14
Да жив наверно)))