Помощь - Поиск - Пользователи - Календарь
Полная версия: Светофор
Форум «Всё о Паскале» > 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(r);
    i:=j
  until KeyPressed
end.
Гость
Спасибо большое, но там должны быть графы с возможными поворотами и они должны иметь определенный цвет, какк это сделать?
Lapp
Цитата(Гость @ 10.11.2007 11:26) *

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