Помощь - Поиск - Пользователи - Календарь
Полная версия: Светофор
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Милана
Помогите нужна срочно программа по принципу действия светофора на сложном перекрестке!!!!!!!
cooler
Как понять по принципу действия светофора?
Чтобы там машины ездили и пешеходы ходили на перекрестке?
Гость
Цитата(cooler @ 8.11.2007 22:24) *

Как понять по принципу действия светофора?
Чтобы там машины ездили и пешеходы ходили на перекрестке?





нет, просто есть перекресток нужно описать принцип как бут переключаться на нем светофоры
мисс_граффити
blink.gif что такое сложный перекресток?
Цитата
Перекресток - это пересечение проезжих частей, расположенных в 1 уровне
(с) мой инструктор, основываясь на ПДД
Lapp
Милана, тебе нужно просто описать это словами или сделать на Паскале программу, эмулирующую действия светофора?
Гость
я знаю как описать )
Lapp
Цитата(Гость @ 9.11.2007 11:23) *

я знаю как описать )

То есть, нужна программа, переключающая огни светофора?
Lapp
Вот, набросал на скорую руку smile.gif. Два светофора, обычный перекресток (несложный smile.gif)
Возможно, тебе придется поиграть временами RT, DT и YT.
Если раскомментировать строку WriteLn в процедуре Show, то новые состояния будут выводиться на новой строке.
uses CRT;

const
RT=1000; {время, когда оба красные (очень короткое)}
GT=10000; {время, когда горит зеленый (длинное)}
YT=2000; {время, когда горит желтый (короткое)}

type
tLi=(G,Y,R);
tTrLi=object
Act:tLi;
x:integer;
constructor Init(a:integer);
procedure Switch(a:tLi);
procedure Show;
end;

const
C:array[tLi] of char=('G','Y','R');

constructor tTrLi.Init(a:integer);
begin
Act:=R;
x:=a
end;

procedure tTrLi.Switch(a:tLi);
begin
Act:=a
end;

procedure tTrLi.Show;
var
i:tLi;
begin
GoToXY(x,WhereY);
for i:=Low(tLi) to High(tLi) do begin
Write(' ');
if i=Act then Write(C[Act]) else Write('*')
end;
end;

var
i,j,k:0..1;
TrLi:array[0..1]of tTrLi;

procedure Show;
var
i:integer;
begin
for i:=0 to 1 do TrLi[i].Show;
{WriteLn}
end;

begin
i:=0;
TrLi[0].Init(1);
TrLi[1].Init(10);
repeat
j:=(i+1) mod 2;
Show;
Delay(RT);
TrLi[i].Switch(G);
Show;
Delay(GT);
TrLi[i].Switch(Y);
Show;
Delay(YT);
TrLi[i].Switch®;
i:=j
until KeyPressed
end.
Гость
Спасибо большое, но там должны быть графы с возможными поворотами и они должны иметь определенный цвет, какк это сделать?
Lapp
Цитата(Гость @ 10.11.2007 11:26) *

должны быть графы с возможными поворотами и они должны иметь определенный цвет,
Что значит "определенный цвет"? Цветов всего три: красный, желтый, зеленый! Если будет больше - ездить станет невозможно..
Может, ты имеешь в виду стрелки? Их, в принципе, можно ввести. Я же написал - это пока простейшая прога, типа базис, фундамент, чтоб тебе было, от чего отталкиваться. Все можно доделать и переделать (графический интерфейс, многосторонние перекрестки..) Ты въезжай в принципы, разбирайся и - вперед! А мы поможем.. smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.