Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2018, 22:20   #1
Dezzy
Пользователь
 
Регистрация: 27.09.2018
Сообщений: 13
По умолчанию Написал игру ping pong, но шарик застревает в ракетке

Написал игру ping pong, но шарик(shape1) застревает в ракетке компьютерного игрока(shape3), помогите, пожалуйста, исправить это.

Код:
var
  Form1: TForm1;
  PosX, PosY, VelX, VelY:single;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
 PosX:=55;
 PosY:=50;
 VelX:=2;
 VelY:=3;
end;
 
procedure TForm1.shar;
begin
 PosX:=PosX+VelX;
 PosY:=PosY+VelY;
 
 
 if PosX > ClientWidth - Shape1.Width then
 VelX:=-VelX;
 
 
 if PosX < 0 then
 VelX:=-VelX;
 
 
 
 if PosY > ClientHeight - Shape1.Width then
 VelY:=-VelY;
 if PosY < 0 then
 VelY:=-VelY;
 
 
 
Shape1.Left:=round(PosX);
 
Shape1.Top:=round(PosY);
end;
 
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
Overlay: Trect;
begin
shar;
 
 If InterSectRect(Overlay, Shape2.BoundsRect, Shape1.BoundsRect) then
begin
 VelX:=-VelX-random(5);
 VelY:=-VelY-random(5);
end;
 
// Условие для отбивания шарика компьютерным игроком
 If InterSectRect(Overlay, Shape3.BoundsRect, Shape1.BoundsRect) then
begin
 VelX:=-VelX-random(5);
 VelY:=-VelY-random(5);
end;
 
end;
 
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Shape2.Top:=Mouse.CursorPos.Y - Form1.ClientOrigin.Y;
end;
 
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;
 
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] [/CODE] (читать FAQ)
Модератор
Вложения
Тип файла: zip Arquivo ZIP do WinRAR (1).zip (204.7 Кб, 9 просмотров)

Последний раз редактировалось Serge_Bliznykov; 28.10.2018 в 19:08.
Dezzy вне форума Ответить с цитированием
Старый 26.10.2018, 23:45   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Просто у Вас скорость шара после удара об ракетку вполне может стать нулевой. И даже шар может проскочить сквозь ракетку. Случайная часть скорости очень велика.
Black Fregat вне форума Ответить с цитированием
Старый 27.10.2018, 17:35   #3
Dezzy
Пользователь
 
Регистрация: 27.09.2018
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Просто у Вас скорость шара после удара об ракетку вполне может стать нулевой. И даже шар может проскочить сквозь ракетку. Случайная часть скорости очень велика.
Я даже когда рандом для отбивания шарика ставлю 2 всё равно залетает в ракетку.
Dezzy вне форума Ответить с цитированием
Старый 28.10.2018, 12:46   #4
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

а вы сделайте, чтоб шарик отбивался не точно от ракетки, а, скажем, за 3 пикселя до неё, как бы от тонкой воздушной прослойки.
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ping-Pong anek Общие вопросы Delphi 3 12.05.2014 19:28
Хочу написать OnLine постапокалиптическую игру (сервак уже написал) нужны помощники! DrSmyrke Gamedev - cоздание игр: Unity, OpenGL, DirectX 20 28.04.2013 23:35
Я написал текстовую игру... saggy Софт 11 05.06.2010 22:32
Я написал игру TAnk ATTACK))просто оцените Wi1D Gamedev - cоздание игр: Unity, OpenGL, DirectX 10 02.01.2010 04:54