Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.01.2011, 23:35
Tenesi Tenesi вне форума
Прохожий
 
Регистрация: 18.01.2011
Сообщения: 1
Репутация: 10
По умолчанию 2Д бродилка

Пытаюсь сделать игру наподобие гта)))) чисто для себя. При движении точка почему-то дёргается, хотелось бы сделать движение более плавным, период таймера 20мс. В качестве всех объектов использую Shape. Мне кажется это из-за того что координаты объекта left,top целые числа.
http://rghost.ru/3990871
Код:
procedure TForm1.tmr1Timer(Sender: TObject);
var
i:integer;
b:boolean;
foo:TPoint;
begin
GetCursorPos(foo);
edt4.Text:=IntToStr(foo.x-form1.left);
edt5.Text:=IntToStr(foo.y-form1.top-60);
{angle:=;}
//============================================================
//  Вычисление движения по углу.
//  Границы угла от 0 до 360 градусов.
//============================================================
     if (ObjP>0) and (ObjS>=0) then
     begin
     x:=Round(JUMP_SPEED*cos((angle*2*PI)/360));
     y:=Round(JUMP_SPEED*sin((angle*2*PI)/360));
     ObjP:=ObjP-1;
     edt1.Text:='Скорость: '+FloatToStr(JUMP_SPEED);
     end
     else
     begin
     edt1.Text:='Скорость: '+FloatToStr(ObjS);
     x:=Round(ObjS*cos((angle*2*PI)/360));
     y:=Round(ObjS*sin((angle*2*PI)/360));
     end;
     if angle+ObjA<0 then
     angle:=360;
     if angle+ObjA>360 then
     angle:=0;
     angle:=angle+ObjA;

//============================================================
//  Проверка всех объектов на столкновения.
//  OBJECT_COUNT - количество существующих объектов.
//============================================================
  b:=true;
  for i:=1 to OBJECT_COUNT do
  if  not(ObjColl(shp1.top+y,shp1.Left+x,i,h)) then
  b:=False;
//============================================================
//============================================================

//============================================================
//  Проверка условий для движения.
//  Движение.
//============================================================
     if b and BorderColl(shp1.Left+x,shp1.Top+y) then
     begin
        pnl2.Left:=pnl2.Left-x;
        pnl2.Top:=pnl2.Top-y;
        shp1.Left:=shp1.Left+x;
        shp1.Top:=shp1.Top+y;
     end;
//============================================================
//============================================================

end;
Ответить с цитированием
  #2  
Старый 19.01.2011, 00:05
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Self.DoubleBuffered := True;
end;
Это поможет, если мелькает графика (например при выводе на канву).
__________________
Помогаю за Спасибо
Ответить с цитированием
  #3  
Старый 19.01.2011, 03:24
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Держи набор спрайтов для 2D игрули. Это конечно не ГТА, но может пригодится.
Вложения
Тип файла: rar riku1.rar (73.8 Кбайт, 27 просмотров)
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 19.01.2011, 10:14
roamer roamer вне форума
Активный
 
Регистрация: 15.04.2009
Сообщения: 369
Репутация: 93
По умолчанию

Цитата:
Сообщение от Tenesi
...период таймера 20мс.

Период стандартного таймера вроде бы не может быть меньше, чем 55 мсек.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter