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

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 7
Всего онлайн: 7
Зарегистрировано юзеров: 7938
Комментариев на сайте: 698
Новый юзер: Henryfar



Последние комментарии
c
Dennisvoifs прокомментировал "Урок 3 - Конструкция IF...THEN...ELSE":
Пункт коммерческого учета цена, Ктп комплектные трансформаторные подстанции москва, Производство ктп москва и не только Вы найдете на нашем специализированном сайте: - Вам к нам!https://sviloguzov.ru/
Arthurneime прокомментировал "Урок 53 - Потоки в Delphi, (часть 1/3)":
[img]https://masterfutures.ru/wp-content/uploads/2020/03/14-2.png[/img] Online trading is becoming increasingly popular, as more people learn of the earning potential of platforms such as Broker, a broker which caters to a significant audience of digital traders (12 million and counting). Known for their excellent user interface, as well as fast deposit and withdrawal times, Broker provides multiple features to help traders earn on the markets. This overview will outline just some of the key aspects traders can expect to enjoy whilst working with Broker broker. Online trading is becoming increasingly popular, as more people learn of the earning potential of platforms such as Broker, a broker which caters to a significant audience of digital traders (12 million and counting). Known for their excellent user interface, as well as fast deposit and withdrawal times, Broker provides multiple features to help traders earn on the markets. This overview will outline just some of the key aspects traders can expect to enjoy whilst working with Broker broker. Broker Broker is operated by a dedicated team, whose main priority has always been to provide the best possible user experience, and ultimately satisfaction. Whether experienced in trading or a newcomer, the platform is easy to use and very responsive. The education section deserves special mention, particularly for assisting traders to learn and implement new strategies – which can be tested on the platforms free demo Source: [url=https://bit.ly/35fv3B6/]Broker[/url] https://bit.ly/35fv3B6/ Tags: Broker

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

  Продолжаем писать игру Пинг-Понг. В этом уроке мы займемся реализацией игрока.

   Вытащим еще один Shape и сделаем ему синий цвет. Вот собственно этим мы и будем отбивать шарик. Перемещать его мы будем мышкой.

шарик


   Для этого создадим событие Form1 OnMouseMove:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Shape2.Top:= Mouse.CursorPos.Y - Form1.ClientOrigin.Y;
end;
   Shape2 - это наш прямоугольник, Mouse.CursorPos - позиции курсора, Form1.ClientOrigin - экранные координаты формы. После компиляции прямоугольник двигается вместе с мышкой, но шарик не отбивается.

   В Delphi есть такая функция:
function InterSectRect(var Dst: TRect; const Src1: TRect; const Src2: TRect);
   Она определяет пересекаются ли Rect'ы, в нашем случае Shape1 и Shape2. Модифицируем код таймера добавив в конец процедуры вот это:

  if InterSectRect(Overlay, Shape2.BoundsRect, Shape1.BoundsRect) then  //если есть пересечение между прямоугольником
  begin                                                                 //и кружком то кружок отправляем обратно 
    VelX:= -VelX;
    VelY:= -VelY;
  end;

   И здесь нам понадобится локальная переменная Overlay: TRect. Вот что должно получится у вас:
procedure TForm1.Timer1Timer(Sender: TObject);
var
	Overlay: TRect;
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);  // положение шарика 
  
  if InterSectRect(Overlay, Shape2.BoundsRect, Shape1.BoundsRect) then  
  begin                                                                 
    VelX:= -VelX;	//если есть пересечение между прямоугольником
    VelY:= -VelY;	//и кружком то кружок отправляем обратно 
  end;

end;
   Теперь при столкновении шарик отскакивает! Но он движется по одному и тому же пути, избавимся от этого добавив немного случайности. В FormCreate допишем событие, добавим в конец слово Randomize, тем самым мы говорим Delphi, что будем использовать улучшенный алгоритм генерации случайных чисел и измени проверку пересечения 2 объектов:
  if InterSectRect(Overlay, Shape2.BoundsRect, Shape1.BoundsRect) then  
  begin                                                                 
    VelX:= -VelX - Random(5);
    VelY:= -VelY - Random(5);
  end;
   Теперь будет лучше.

   В следующем уроке мы будем делать искусственный интеллект.

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


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

Урок 26 - Создаем игру Ping-pong - часть(1/3) Урок 28 - Создаем игру Ping-pong - часть(3/3)

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



аватар Добавил(а): mikkylovejoe [Новичок] Дата: 2013-06-17
if InterSectRect(Overlay, Shape2.BoundsRect, Shape1.BoundsRect) Что за Overlay? Вы по нее не ранее не писали, и теперь delphi ругается.




аватар Добавил: RinDproramer [Новичок] Дата: 2013-10-30
У меня нечего не ругается. Наверное, ты не объявил эту переменную.




аватар Добавил: Timosha_45 [Новичок] Дата: 2014-05-09
вопрос, при наведении мыши на "ракетку", она за ней не следует а двигается вниз, что делать?




аватар Добавил(а): eltgm [Новичок] Дата: 2014-07-31
что с функцией-то делать?Объявили,а дальше?У меня шарик просто проскакивает ракетку




аватар Добавил(а): darkshark1231 [Новичок] Дата: 2014-10-16
ничего не понял что куда прописывать. Не понятно написано




аватар Добавил: McDias [Новичок] Дата: 2015-02-03
выаыаф




аватар Добавил: McDias [Новичок] Дата: 2015-02-03
Не обязательно писать имя переменной Overlay, можно присвоить и любую другую букву




аватар Добавил(а): Bek1996 [Новичок] Дата: 2016-02-10
Кстати не забудтье написать в раздел var overlay:trect;




аватар Добавил(а): pronin106 [Новичок] Дата: 2017-05-29
Все получилось! Спасибо за урок. У кого не получилось читайте внимательнее! Не делайте тупо копипаст