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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2011, 19:20   #1
saltonik
Пользователь
 
Регистрация: 09.03.2011
Сообщений: 12
По умолчанию движение авто со скоростью

Здравствуйте! Помогите пожалуйста найти ошибку. Запускаю программу на выполнение - зависает((

Цитата:
procedure TForm2.Timer3Timer(Sender: TObject);
begin
k:= (100*v) div 36; // Это на сколько пикселей будет передвигаться автомобиль, v=скорость авто км/ч
// shape1 - автомобиль, s - остановочный путь
while shape1.left< s do
begin
shape1.left:= shape1.left+k;
end;
timer3.Enabled:=false;
end;
saltonik вне форума Ответить с цитированием
Старый 02.04.2011, 19:22   #2
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Что этот код делать должен?)) И кто в таймер цикл сует?)

Код:
procedure TForm2.Timer3Timer(Sender: TObject);
begin
k:= (100*v) div 36;
if shape1.left< s then
shape1.left:= shape1.left+k 
else
timer3.Enabled:=false;
end;
Только помоему таймер нельзя отключать в его обработчике...
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 02.04.2011, 19:27   #3
saltonik
Пользователь
 
Регистрация: 09.03.2011
Сообщений: 12
По умолчанию

shape1 то есть автомобиль должен двигаться. в таймере нельзя использовать цикл??
saltonik вне форума Ответить с цитированием
Старый 02.04.2011, 19:28   #4
saltonik
Пользователь
 
Регистрация: 09.03.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от MyLastHit Посмотреть сообщение
Что этот код делать должен?)) И кто в таймер цикл сует?)

Код:
procedure TForm2.Timer3Timer(Sender: TObject);
begin
k:= (100*v) div 36;
if shape1.left< s then
shape1.left:= shape1.left+k 
else
timer3.Enabled:=false;
end;
Только помоему таймер нельзя отключать в его обработчике...
shape1 то есть автомобиль должен двигаться. в таймере нельзя использовать цикл??
saltonik вне форума Ответить с цитированием
Старый 02.04.2011, 19:31   #5
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Можно, но помоему тебе нужно чтобы машинка плавно ехала и приложение не вешалось? Цикл While здесь не к чему. Тебе нужно чтобы каждую секунду машинка двигалась на несколько пикселей вправо если ее положение не равно S.
В общем вот код для таймера:
Код:
procedure TForm2.Timer3Timer(Sender: TObject);
begin
if shape1.left< s then
shape1.left:= shape1.left+k 
else
timer3.Enabled:=false;
end;
А это помести в ОнКриэйт формы: k:= (100*v) div 36;
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось MyLastHit; 02.04.2011 в 19:39.
MyLastHit вне форума Ответить с цитированием
Старый 02.04.2011, 19:33   #6
saltonik
Пользователь
 
Регистрация: 09.03.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от MyLastHit Посмотреть сообщение
Можно, но помоему тебе нужно чтобы машинка плавно ехала и приложение не вешалось? Цикл While здесь не к чему. Тебе нужно чтобы каждую секунду машинка двигалась на несколько пикселей в лево если ее положение не равно S.
дада точно чтобы плавно ехала. а как можно сделать чтобы машинка остановилась, как только проедет дорогу равную s?
saltonik вне форума Ответить с цитированием
Старый 02.04.2011, 19:38   #7
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Код:
if shape1.left< s then //если машинка не приехала до отметки S то 
shape1.left:= shape1.left+k //двигать ее на к-пикселей вправо
else //иначе
timer3.Enabled:=false;//выключить таймер=остановить движение
и это все выполнять каждые timer3.interval миллисекунд
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 02.04.2011, 19:45   #8
saltonik
Пользователь
 
Регистрация: 09.03.2011
Сообщений: 12
По умолчанию

что то не двигается машинка=((( k,s и shape1.left проверила, они равны определеному значению, не ноль. в чем же тогда проблема?
saltonik вне форума Ответить с цитированием
Старый 02.04.2011, 19:56   #9
saltonik
Пользователь
 
Регистрация: 09.03.2011
Сообщений: 12
По умолчанию

получилось!
Код:
procedure TForm2.Timer3Timer(Sender: TObject);
begin
       shape1.left:= shape1.left+k;
if shape1.left > s then  timer3.Enabled:=false;

end;
спасибо=)
saltonik вне форума Ответить с цитированием
Старый 02.04.2011, 23:18   #10
saltonik
Пользователь
 
Регистрация: 09.03.2011
Сообщений: 12
По умолчанию проблема с showmessage

Здравствуйте! Помогите плиииз: когда выходит шоумессидж, ок нужно нажимать неск раз чтобы окошко мессиджа закрылось. в чем ошибка.

Код:
procedure TForm2.Timer3Timer(Sender: TObject);
begin
       shape1.left:= shape1.left+k;
       shape2.top:= shape2.top-l;
if shape1.left+shape1.width > ostput then
begin
timer3.Enabled:=false; timer4.Enabled:=false;  timer1.Enabled:=false;
end;
 if ((shape1.Left+shape1.Width)>shape2.Left) and (shape2.top< shape1.top+shape1.height)
 then
 begin
case i of
1: p:='ÊÎËIÊ';
2: p:='ÊÎËIÊ';
3: p:='ÊÎËIÊ';
4: p:='ÊÎËIÊ';
5: p:='ÆÀßÓ ÆÓÐÃIÍØI';
 END;
 p:= 'Ñîãûï êåòó îðûíäàëàäû! Åðåæåíi áóçóøû - '+#13#10+p;
 showmessage(p);
 end;
end;
saltonik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение со скоростью света и быстрее скорости света - Сверхсветовое движение Alar Свободное общение 354 13.11.2011 21:32
Копирование файла с заданой скоростью black_prog Помощь студентам 2 25.03.2011 16:00
проблемы с скоростью интернета zheka9601 Общие вопросы C/C++ 2 06.05.2010 20:11
Пересечение объектов. Проблема со скоростью движения Манжосов Денис :) Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 06.03.2010 19:39
OpenGL. Проблема со скоростью передвижения объектов Blade Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 26.10.2009 13:40