Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет по перекрестку.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
372 Кб
Скачать
☆

Пользовательский интерфейс

При запуске приложения открывается главная форма (Рисунок 3). После нажатия на кнопку «start», программа визуализирует движения автомобилей, а так же показывает сигналы светофора (Рисунок 4).

Рисунок 4. Движение транспортных средств.

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

Рисунок 5. Соблюдение сигнала светофора.

Тестирование

При первом тестировании программы возникла ошибка отображения сигналов 2 светофоров. Данные ошибки были связанны с неправильной расстановкой времени в таймере. Ошибку удалось устранить сделав таймеры тождественными.

При втором тестировании возникла ошибка с выездом на запрещающий сигнал светофора. Данная ошибка возникала в связи не правильным распознаванием сигнала светофора. Для удобства устранения ошибки был добавлен 2 светофора.

Заключение

В результате проведенной работы было создано приложение, моделирующую движение на перекрестке. Поставленные цель и задача были достигнуты.

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

Библиографический список

1. Перекрёсток [Электронный ресурс] : Материал из Википедии — свободной энциклопедии : Версия 50319957, сохранённая в 17:46 UTC 1 декабря 2012 / Авторы Википедии // Википедия, свободная энциклопедия. — Электрон. дан. — Сан-Франциско: Фонд Викимедиа, 2012. — Режим доступа: http://ru.wikipedia.org/?oldid=50319957

2. На перекрестке – Правила безопасного проезда перекрестков - электронный ресурс - Режим доступа: http://rutrassa.ru/drive/perekrestok.php

Приложение

Исходный код

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls;

type

TForm1 = class(TForm)

Bevel1: TBevel;

Bevel2: TBevel;

Bevel3: TBevel;

Bevel4: TBevel;

Bevel5: TBevel;

Bevel6: TBevel;

Bevel7: TBevel;

Bevel8: TBevel;

Shape1: TShape;

Shape2: TShape;

Shape3: TShape;

Shape4: TShape;

Shape5: TShape;

Shape6: TShape;

car1: TShape;

car2: TShape;

Button1: TButton;

Timer1: TTimer;

Timer2: TTimer;

Timer3: TTimer;

Timer4: TTimer;

Timer5: TTimer;

car3: TShape;

Car4: TShape;

Timer6: TTimer;

Timer7: TTimer;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

procedure Timer2Timer(Sender: TObject);

procedure Timer3Timer(Sender: TObject);

procedure Timer4Timer(Sender: TObject);

procedure Timer5Timer(Sender: TObject);

procedure Timer6Timer(Sender: TObject);

procedure Timer7Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

i,y: Byte;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

i:= 1;

Shape1.Brush.Color:= clRed;

Shape2.Brush.Color:= clWhite;

Shape3.Brush.Color:= clWhite;

Shape4.Brush.Color:= clWhite;

Shape5.Brush.Color:= clWhite;

Shape6.Brush.Color:= clGreen;

Timer1.Enabled:= True;

Timer4.Enabled:= True;

Timer5.Enabled:= True;

Timer6.Enabled:= True;

Timer7.Enabled:= True;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

car1.Brush.Color:= clBlack;

car2.Brush.Color:= clBlue;

car3.Brush.Color:= clRed;

car4.Brush.Color:= clGreen;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Case i of

0: begin

Shape1.Brush.Color:= clRed;

Shape2.Brush.Color:= clWhite;

Shape3.Brush.Color:= clWhite;

Shape4.Brush.Color:= clWhite;

Shape5.Brush.Color:= clWhite;

Shape6.Brush.Color:= clGreen;

Timer4.Enabled:= True;

Timer6.Enabled:=true;

end;

1: begin

Timer1.Enabled:= False;

y:= 0;

Timer3.Enabled:= True;

end;

2: begin

Shape1.Brush.Color:= clWhite ;

Shape2.Brush.Color:= clWhite;

Shape3.Brush.Color:= clGreen;

Shape4.Brush.Color:= clRed;

Shape5.Brush.Color:= clWhite;

Shape6.Brush.Color:= clWhite;

Timer5.Enabled:= True;

Timer7.Enabled:=True;

end;

3: begin

Timer1.Enabled:= False;

y:= 0;

Timer2.Enabled:= True;

end;

end;

inc(i);

If i = 4 then

i:= 0;

end;

procedure TForm1.Timer2Timer(Sender: TObject);

begin

If Shape3.Brush.Color= clGreen then

Shape3.Brush.Color:= clWhite

else

Shape3.Brush.Color:= clGreen;

inc(y);

If y = 9 then

begin

Timer2.Enabled:= False;

Shape1.Brush.Color:= clWhite;

Shape2.Brush.Color:= clYellow;

Shape3.Brush.Color:= clWhite;

Shape4.Brush.Color:= clWhite;

Shape5.Brush.Color:= clYellow;

Shape6.Brush.Color:= clWhite;

Timer1.Enabled:= True;

end;

end;

procedure TForm1.Timer3Timer(Sender: TObject);

begin

If Shape6.Brush.Color= clGreen then

Shape6.Brush.Color:= clWhite

else

Shape6.Brush.Color:= clGreen;

inc(y);

If y = 9 then

begin

Timer3.Enabled:= False;

Shape1.Brush.Color:= clWhite;

Shape2.Brush.Color:= clYellow;

Shape3.Brush.Color:= clWhite;

Shape4.Brush.Color:= clWhite;

Shape5.Brush.Color:= clYellow;

Shape6.Brush.Color:= clWhite;

Timer1.Enabled:= True;

end;

end;

procedure TForm1.Timer4Timer(Sender: TObject);

begin

if car1.Top = - 50 then

begin

car1.Top:= 384;

end;

car1.Top:= car1.Top - 1;

If ((Shape5.Brush.Color = clYellow) OR (Shape6.Brush.Color = clRed) OR (Timer3.Enabled)) AND (car1.Top = 264) then

Timer4.Enabled:= False;

end;

procedure TForm1.Timer5Timer(Sender: TObject);

begin

if car2.Left = - 50 then

begin

car2.Left:= 700;

end;

car2.Left:= car2.Left - 1;

If ((Shape2.Brush.Color = clYellow) OR (Shape1.Brush.Color = clRed) OR(Timer2.Enabled)) AND (car2.Left = 415) then

Timer5.Enabled:= False;

end;

procedure TForm1.Timer6Timer(Sender: TObject);

begin

if car4.Top = 384 then

begin

car4.Top:= 0;

end;

car4.Top:= car4.Top +1;

If ((Shape5.Brush.Color = clYellow) OR (Shape4.Brush.Color = clRed) OR (Timer3.Enabled)) AND (car4.Top = 80) then

Timer6.Enabled:= False;

end;

procedure TForm1.Timer7Timer(Sender: TObject);

begin

if car3.Left = 700 then

begin

car3.Left:= 0;

end;

car3.Left:= car3.Left + 1;

If ((Shape2.Brush.Color = clYellow) OR (Shape1.Brush.Color = clRed) OR(Timer2.Enabled)) AND (car3.Left = 250) then

Timer7.Enabled:= False;

end;

end.

13