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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2012, 10:29   #1
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Восклицание Тормозит

Здарова.
Я пытаюсь тут игру сделать "гоночки". Наклепал пока шаблон и встретился с одной проблемкой:
При нажатии на кнопки "вправо" "влево" и т.д. движение начинает тормозить.
Может кто знает такую проблемку, подскажите.
Буду очень благодарен.

В архиве я выложил exe'ник
Вложения
Тип файла: rar игра.rar (515.1 Кб, 15 просмотров)
glebast вне форума Ответить с цитированием
Старый 18.04.2012, 10:43   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Без исходников понять ничего невозможно
Кстати, забавный баг - если ты врезался, то машину можно сколько угодно долго удерживать на трассе.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 18.04.2012, 10:59   #3
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
По умолчанию

кстати это задумано было, просто немного не доработано. Задумка была, чтоб выровнять можно было машину.
glebast вне форума Ответить с цитированием
Старый 18.04.2012, 11:00   #4
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
По умолчанию

Код:
procedure gameover;
begin
form2.Timer1.Enabled:=false;
form2.Timer2.Enabled:=false;
form2.goleft.Enabled:=false;
form2.goright.Enabled:=false;
form2.goup.Enabled:=false;
form2.godown.Enabled:=false;
form2.timecar1.Enabled:=false;
form2.timercar2.Enabled:=false;
form2.timercar3.Enabled:=false;
form2.timercar4.Enabled:=false;
form2.Tavaria.Enabled:=false;
showmessage('game over');
a:=4;
form2.Close;
end;

procedure TForm2.TavariaTimer(Sender: TObject);
begin
form2.car.Top:=form2.car.Top-5;
form2.car.left:=form2.car.left-5;
form2.car.Angle:=form2.car.Angle+15;
if form2.car.Left<form2.road1.Left then gameover;
end;

procedure avaria;
begin
form2.Tavaria.Enabled:=true;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
sch:=0;
randomize;
form2.KeyPreview:=true;
Form2.DoubleBuffered:=True;
a:=4;
end;

procedure TForm2.Timer2Timer(Sender: TObject);
begin
a:=a-1;
timer_schet.Caption:=inttostr(a);

if a<1 then
begin
timer_schet.Left:=road1.Left;
timer_schet.Font.Size:=55;
timer_schet.Caption:=('Âïåðåä!');
end;

if a=-1 then
begin
timer_schet.Visible:=false;
Timer1.Enabled:=true;
timer2.Enabled:=false;
timecar1.Enabled:=true;
timercar2.Enabled:=true;
timercar3.Enabled:=true;
timercar4.Enabled:=true;
end;

end;

procedure TForm2.exitClick(Sender: TObject);
begin
halt;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
schet1.Caption:=inttostr(sch);
road1.Top:=road1.Top+7;
road2.Top:=road2.Top+7;
if road1.Top>=form2.ClientHeight then road1.Top:=road2.Top-(road1.Height);
if road2.Top>=form2.ClientHeight then road2.Top:=road1.Top-(road2.Height);

relef1.Top:=relef1.Top+7;
relef2.Top:=relef2.Top+7;
relef3.Top:=relef3.Top+7;
relef4.Top:=relef4.Top+7;
if relef1.Top>=form2.ClientHeight then relef1.Top:=relef2.Top-(relef1.Height);
if relef2.Top>=form2.ClientHeight then relef2.Top:=relef1.Top-(relef2.Height);
if relef3.Top>=form2.ClientHeight then relef3.Top:=relef4.Top-(relef3.Height);
if relef4.Top>=form2.ClientHeight then relef4.Top:=relef3.Top-(relef4.Height);

end;

procedure TForm2.goleftTimer(Sender: TObject);
begin
if car.Left>road1.Left-10 then
car.Left:=car.Left-3;
end;

procedure TForm2.gorightTimer(Sender: TObject);
begin
if car.Left<road1.Left+242 then
car.Left:=car.Left+3;
end;

procedure TForm2.goupTimer(Sender: TObject);
begin
if car.top>0 then
car.Top:=car.Top-3;
end;

procedure TForm2.godownTimer(Sender: TObject);
begin
if car.top<form2.ClientHeight then
car.Top:=car.Top+3;
end;

procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (key=vk_left) and (car.Left>road1.Left+10) then
begin
car.Angle:=20;
goleft.Enabled:=true;
car.Left:=car.Left-3;
end;

if (key=vk_right) and (car.Left<road1.Left+240) then
begin
car.Angle:=-20;
goright.Enabled:=true;
car.Left:=car.Left+3;
end;

if (key=vk_up) and (car.top>0) then
begin
goup.Enabled:=true;
car.top:=car.top-3;
end;

if (key=vk_down) and (car.top<form2.ClientHeight) then
begin
godown.Enabled:=true;
car.top:=car.top+3;
end;

end;

procedure TForm2.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
car.Angle:=0;
goleft.Enabled:=false;
goright.Enabled:=false;
goup.Enabled:=false;
godown.Enabled:=false;
end;

procedure TForm2.Timecar1Timer(Sender: TObject);
begin
car1.Top:=car1.Top+10;
if car1.Top>form2.ClientHeight then
begin
sch:=sch+10;
car1.Top:=-car1.Height;
car1.Left:=random(road1.Width-car1.Width)+road1.Left;
end;

if ((car1.Top + car1.Height-15) > car.Top) and
    (car1.Top+15 < (car.Top + car.Height))and
    ((car1.Left + car1.Width-15) >car.Left) and
    (car1.Left+15 < car.Left + car.Width)
    then avaria;

end;

procedure TForm2.Timercar2Timer(Sender: TObject);
begin
car2.Top:=car2.Top+10;
if car2.Top>form2.ClientHeight then
begin
sch:=sch+10;
car2.Top:=-car2.Height;
car2.Left:=random(road1.Width-car2.Width)+road1.Left;
end;

if ((car2.Top + car2.Height-10) > car.Top) and
    (car2.Top+15 < (car.Top + car.Height))and
    ((car2.Left + car2.Width-15) >car.Left) and
    (car2.Left+15 < car.Left + car.Width)
    then avaria;
end;

procedure TForm2.Timercar3Timer(Sender: TObject);
begin
car3.Top:=car3.Top+10;
if car3.Top>form2.ClientHeight then
begin
sch:=sch+10;
car3.Top:=-car3.Height;
car3.Left:=random(road1.Width-car3.Width)+road1.Left;
end;

if ((car3.Top + car3.Height-15) > car.Top) and
    (car3.Top+15 < (car.Top + car.Height))and
    ((car3.Left + car3.Width-15) >car.Left) and
    (car3.Left+15 < car.Left + car.Width)
    then avaria;
end;
...
glebast вне форума Ответить с цитированием
Старый 18.04.2012, 12:32   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Пока особо не разобрался в коде (лучше бы проект , чтобы можно было скомпилировать). Слишком много таймеров на мой взгляд. Нужен один игровой таймер и различные коэффициенты для объектов, чтобы задавать относительные скорости.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 18.04.2012, 12:53   #6
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
Вопрос

вот исходник.
А как можно сделать меньше таймеров, разве это можно сделать один таймер для нескольких ботов(машинок)?
Вложения
Тип файла: rar sourc.rar (2.01 Мб, 14 просмотров)
glebast вне форума Ответить с цитированием
Старый 18.04.2012, 12:56   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Нужно создать массив машинок, который будет обрабатываться в одном таймере.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 18.04.2012, 12:58   #8
glebast
Форумчанин
 
Аватар для glebast
 
Регистрация: 10.12.2011
Сообщений: 154
По умолчанию

Честно сказать массивы это не мой конек. Я в делфи только начинающий, если не сложно, приведите хотя бы маленький примерчик.
Заранее спасибо.
glebast вне форума Ответить с цитированием
Старый 18.04.2012, 23:30   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Скомпилировал в Delphi 2010. Скорость возросла заметно. Но я не могу никак пока поменять код. Скажите, как установить RotateImage?

УПД Поставил Дельфи 7 и смог установить TRotateImage. Теперь смогу покопаться нормально в исходнике.
Вложения
Тип файла: zip super_car.zip (1.13 Мб, 10 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 19.04.2012 в 19:36.
BDA на форуме Ответить с цитированием
Старый 21.04.2012, 00:17   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Немного ускорил игру. Машинки теперь обрабатываются в цикле. Сократил количество таймеров.
Вложения
Тип файла: zip game.zip (2.75 Мб, 24 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тормозит ноутбук fotomir211711 Помощь студентам 7 17.04.2011 12:48
Системник тормозит Dreanks Компьютерное железо 0 21.08.2010 10:49
Компутер тормозит :( Utkin Компьютерное железо 9 24.10.2009 13:54
Скрипт тормозит в IE Fluder JavaScript, Ajax 4 11.07.2009 14:33
Тормозит печать... фЁдОр Общие вопросы Delphi 5 16.02.2009 08:40