Entwickler-Ecke

Sonstiges (Delphi) - Schulaufgabe: Auto fahren lassen


LZSyalos - So 09.10.11 17:34
Titel: Schulaufgabe: Auto fahren lassen
Hallo DelphiForum!
In der Schule haben wir neuerdings Informatik-Unterricht und wir benutzen Delphi6, um diverse Simulationen zu erzeugen, wie zum Beispiel eine Ampelschaltung und Tag/Nacht-Simulatoren.

Wir haben bisher einfachste Befehle wie "bt1.Color:=clred" gelernt und tasten uns gerade an "If/Then/Else" ran.

Außerdem haben wir die Aufgabe bekommen in Delphi6 eine Fahrbahn zu designen, auf der sich ein Auto bewegt.

Nun meine Frage:
Welchen Befehl muss ich eingeben, um mit einem einzigen Button das Auto dazuzubringen sich immer ein Feld weiter nach rechts zu bewegen, und wo und wie füge ich einen Timer ein, damit das Auto sich konstant nach rechts bewegt?

Danke und Grüße, LXSyalos!

PS:
Die Objekte heißen:

btButton = Button, um das Auto zu bewegen
ImAuto = Auto-Grafik, die bewegt werden soll
PFahrbahn = Fahrbahn, auf der das Auto fahren soll
PLine1,2,3 = Die weißen Linien auf der Fahrbahn :)

Timer sollte, wenn nötig TTimer heißen.


platzwart - So 09.10.11 17:39

Ein Timer führt nach einer definierten Zeit immer dieselbe Methode aus. Also solltest du eine Methode schreiben, die das Auto um nur einen Schritt bewegt. Diese Methode weist du dem OnTimer-Ereignis des Timers zu. Nun wird das Auto immer um einen Schritt bewegt, wenn der Timer das Ereignis auslöst (Zeit steuerbar über Interval (gemessen in Millisekunden)). Für das Auto musst du dir die Position in einer Variablen merken. Mit dem OnClick-Ereignis des Buttons wird der Timer gestartet (Enabled:= True).


Xion - Mo 10.10.11 06:58

Um das Auto zu bewegen musst du verändern:


Delphi-Quelltext
1:
2:
ImAuto.Left
ImAuto.Top


also z.B. um eins nach oben bewegen:

Delphi-Quelltext
1:
ImAuto.Top := ImAuto.Top-1;                    


Jedesmal wenn du um 1 verschoben hast, musst du warten, damit das Bild erstmal dargestellt werden kann (dein Rechner ist sonst viel zu schnell und verschiebt das Auto innerhalb von Millisekunden sonstwohin). Dies geht z.B. mittels Timer. Dessen Funktion wird ja immerwieder aufgerufen (kennst du schon von der Ampelsteuerung).