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