Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Nikich500
0 / 0 / 0
Регистрация: 26.10.2013
Сообщений: 45
1

Имитация светофора и машины

09.06.2015, 18:55. Просмотров 399. Ответов 1
Метки нет (Все метки)

На форме находится прямоугольник (Shape), изображающий автомобиль. Он движется по горизонтали, «отражаясь» от границ формы.
В центре формы располагается «светофор» (3 Shape на панели Panel). Светофор переключается от таймера Timer по общепринятым правилам.
Когда машина подъезжает к светофору, она проезжает мимо него только при зеленом сигнале, а в противном случае останавливается в ожидании.

Вот код.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
procedure TForm1.FormCreate(Sender: TObject);
begin
dvig:=65;
end;
 
procedure TForm1.FormResize(Sender: TObject);
begin
Panel1.Left:= (Form1.Width div 2)-35;
end;
 
procedure TForm1.Timer2Timer(Sender: TObject);
begin
case Timer2.Interval of
10000: begin
Shape4.Brush.Color:=clWhite;
Shape3.Brush.Color:=clYellow;
Timer2.Interval:= 3000;
end;
3000: begin
Shape3.Brush.Color:=clWhite;
Shape2.Brush.Color:=clRed;
Timer2.Interval:= 15000;
end;
15000: begin
Shape3.Brush.Color:=clYellow;
Timer2.Interval:= 2000;
end;
 
2000: begin
Shape2.Brush.Color:=clWhite;
Shape3.Brush.Color:=clWhite;
Shape4.Brush.Color:=clGreen;
Timer2.Interval:= 10000;
end;
end;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (Shape4.Brush.Color=clWhite)and((Panel1.Left)-dvig=Shape1.Left) then
 
else begin
if (dvig=65)and((Shape1.Left)<((Form1.Width)-90)) then Shape1.Left:=(Shape1.Left)+1
else dvig:=-50;
 
if (dvig=-50)and((Shape1.Left)>8) then Shape1.Left:=(Shape1.Left)-1
else dvig:=65;
end;
end;
 
end.
переменная dvig используется для для указания направления движения и правит координаты остановки перед сфетофором и после него. Что собственно тут не так: преподу не понравились проверки(Первый if должен проверять находится близко или нет машинка, второй if - находится машинка слева или справа...а третий if проверяет цвет) и переменная dvig.

Помогите, кто-нибудь видит здесь более лучший алгоритм по проверкам? и что сделать с dvig, раз она такая плохая?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2015, 18:55
Ответы с готовыми решениями:

Автоматическое переключение цветов светофора
Есть программа &quot;Светофор&quot;. Цвета переключаются кнопочкой. Нужно сделать так,...

Имитация клавиатуры
У меня такая задача сложилась. Необходимо программно ввести в поле под курсором...

Имитация пульса
Всем хай. Знаете, у медиков в больницах стоят штуковины, отслеживающие...

имитация мышки?
ктото может знает как сделать так чтобы мышшь сама выполняла действия при этом...

Имитация клика мыши
Всем привет! Вообщем вопрос: Как при нажатии левой кнопки мыши с...

1
krapotkin
3420 / 3027 / 1047
Регистрация: 14.04.2014
Сообщений: 14,688
Записей в блоге: 15
09.06.2015, 20:38 2
Цитата Сообщение от Nikich500 Посмотреть сообщение
case Timer2.Interval of
подозрение, что таймер как то извращенно используется )))

сделать массив состояний
таймер чисто счетчик обновляет
как только с последнего состояния протикало больше секунд, чем у него записано, переключаем состояние на следующее

рисование тоже идет просто в таймере, основываясь на времени, состоянии системы и координатах авто
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2015, 20:38

Image имитация MouseEnter
Доброго времени суток всем. Помогите советом, как поступить. На форме...

Имитация окон windows
народ помогите пожалуйста!!!оч нужно. в общем нужно сделать визуальную...

Имитация движений мыши
Есть желание сделать некий АимБот, моя задукмка: ищем в приложении пиксель или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru