Java Reference
In-Depth Information
void kehrt() {
linksUm();
linksUm();
}
14.10.2 Beispielprogramm 2
In diesem Beispiel wird die Lösung von Beispielprogramm 3 aus Kapitel 11.6.3 leicht abgeändert.
Aufgabe:
Der Hamster befindet sich in einem geschlossenen, körnerlosen Raum unbekannter Größe. Rechts
von ihm befindet sich eine Wand und vor ihm das Feld ist frei (siehe Beispiel in Abbildung 14.10).
Der Hamster soll solange an der Wand entlanglaufen, bis er irgendwann wieder sein Ausgangsfeld
erreicht. Er hat unter Umständen anfangs kein Korn in seinem Maul!
Abbildung 14.10: Typische Hamster-Landschaft zu Beispielprogramm 2
Lösungsidee:
Der Hamster merkt sich in einer globalen int-Variablen
richtung
die Richtung, in die er gera-
de läuft. Seine Richtung ändert sich immer dann, wenn er den Befehl
linksUm();
aufruft. Des-
halb wird eine neue Prozedur
neuesLinksUm
definiert, in der neben der Ausführung des Befehls
linksUm();
die Richtungsänderung in der Variablen
richtung
vermerkt wird.
Außerdem werden zwei globale int-Variablen
eineDimension
und
andereDimension
definiert.
Die eine der beiden Variablen repräsentiert dabei eine horizontale Bewegung des Hamsters, die
andere eine vertikale Bewegung.
1
Es wird eine Prozedur
neuesVor
definiert und imHauptprogramm
benutzt, in der neben dem Aufruf des vor-Befehls die Bewegungen des Hamsters nachvollzogen
werden, und zwar dadurch, dass die Werte der beiden Variablen entsprechend der aktuellen Richtung
des Hamsters geändert werden.
Durch eine Überprüfung der Werte der beiden Variablen
eineDimension
und
andereDimension
kann der Hamster ermitteln, ob er seine Ausgangsposition wieder erreicht hat; das ist nämlich genau
dann der Fall, wenn beide Variablen wieder ihre Initialwerte (hier 0) enthalten. Für diese Überprü-
fung wird eine boolesche Funktion
ausgangspunktErreicht
definiert.
1
Welche der beiden Variablen welche Bewegung repräsentiert, ist abhängig davon, in welche Richtung der Hamster anfangs
schaut.













































Search WWH ::

Custom Search