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

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 4
Всего онлайн: 4
Зарегистрировано юзеров: 6501
Комментариев на сайте: 647
Новый юзер: KajinDral



Последние комментарии
c
Cmertb06 прокомментировал "Урок 1 - Инициализация OpenGL":
Возможно ли рисовать на экране? Например у Screen.Monitors[0] есть свойство Handle?
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
uses ...sevenzip, ... function ProgressCallback(sender: Pointer; total: boolean; value: int64): HRESULT; stdcall; begin if total then Form1.sprgrsbr1.Max:= value else Form1.sprgrsbr1.Position:= value; Result:= S_OK; end; function Decompress(FileName, DestDir, ArcFname: String; ArcDir: Boolean ): Boolean; var i: Integer; ItP: string; items: array[1..11] of Cardinal; sprgrsbr1: TsProgressBar; begin Result:= False; Application.ProcessMessages; try with CreateInArchive(CLSID_CFormat7z) do begin OpenFile(FileName); SetProgressCallback(sprgrsbr1, ProgressCallback); for i:= 1 to NumberOfItems - 1 do if not ItemIsFolder[i] then //ExtractItem(items[i], Steam, False); - как ей пользоваться в душе не понимаю... ExtractTo(DestDir); end; finally Result:= True; end; end;

Урок 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
Да жив наверно)))




аватар Добавил(а): opchik [Новичок] Дата: 2018-08-29
пмогите