Witam, to mój pierwszy temat tutaj :)
Dostałem zadanie z informatyki - projekt - stworzenia symulatora zielonej fali, czyli jadą sobie samochody i zatrzymują się przed pasami kiedy mają czerwone światło. Trzeba to zrobić w aplikacji okienkowej w delphi7. Ma to wyglądać mniej więcej tak:
|car1|->.........|car2|->........|car3|->..|pasy-zielone|.........|car4|.|car5|.|pasy-czerwone|.........
....... - ulica
-> - samochód się porusza
Jak widać, samochody mają przejeżdżać przez pasy kiedy jest zielone światło, a kiedy jest czerwone zatrzymywać się przed pasami i później mają się ustawić jeden za drugim w kolejce. Kiedy pojawi się zielone, znowu jadą - najlepiej gdyby startowały w miarę realistycznie czyli najpierw rusza pierwszy z kolejki, później następne.
Jestem bardzo początkujący, ale nauczenie się kilku zagadnień nie stanowi dla mnie problemu, jednak prosiłbym o podpowiedź które zagadnienia byłyby mi potrzebne do wykonania tego zadania.
Oto co wymyśliłem do tej pory, jeśli nie da się tego zrobić tak jak zacząłem proszę o skierowanie mnie na właściwą drogę :P
Na początku trzeba podać natężenie ruchy - ile pojazdów przejeżdza na godzinę przez tę ulicę. Wczytywana jest zmienna "natezenie" oznaczająca ilość pojazdów. Samochody przejeżdzają co sekundę, więc maksymalnie może być 3600 aut na godzinę. Jeśli natężenie wynosi np. 1800, to wtedy następuje test: losowana jest liczba z przedziału 1 - 3600, jeśli jest większa od 1800 to tworzony jest Tshape (który odzwierciedla samochód) i jest zapisywany do tablicy "samochody".
procedure TForm1.Timer4Timer(Sender: TObject);
begin
randomize;
inc(e);
test[e]:=random(3600+1);
if natezenie>test[e] then begin
s:=tshape.create(form1);
s.Parent:=Form1;
s.Top:=250;
s.Left:=64+s.left;
s.Width:=37;
s.Height:=17;
s.Brush.Color:=clWhite;
s.Brush.Style:=bsSolid;
s.Shape:=stRectangle;
s.Pen.Color:=clBlack;
s.Pen.Mode:=pmCopy;
s.Pen.Style:=psSolid;
s.Pen.Width:=1;
s.Visible:=true;
end;
if natezenie>test[e] then inc(a);
samochody[a]:=s;
end;
A więc mam tutaj tworzące się co sekundę Tshape zapisane w tablicy samochody[a].
Co chciałbym z tym zrobić:
-Chcę żeby samochody z tej tablicy zachowywały się tak jak opisałem na początku. Zamierzam to zrobić poprzez stworzenie timera, który będzie po prostu dodawał "left" do każdego Tshape jaki się pojawi.
-Kiedy wyjadą poza teren drogi, chcę żeby się po prostu zatrzymały i żeby program o nich zapomniał. Czyli kiedy ich parametr "left" wyniesie ileśtam, przestanie im się dodawać "left".
-Chce kontrolować ich ruch za pomocą Timera. Jeśli jeden samochód napotka czerwone światło lub inny samochód przed sobą w jakiejś odległości od siebie, jego "left" przestanie się dodawać. Jeśli światło będzie zielone, left znowu się zacznie dodawać.
-Na końcu zlicza się ilość samochodów które przejechały i największa długość kolejki samochodów przed pasami.
Czego nie umiem zrobić:
-Nie wiem jak jednocześnie kontrolować ruch wszystkich aut z tablicy jednym Timerem.
Pytania:
-Czy mój pomysł jest dobry i czy da się to tak zrobić?
-Czy jest jakiś łatwiejszy sposób?
-Czego powiniennem się douczyć przed zrobieniem tego zadania?