Commit 98190f4f authored by Michael Faes's avatar Michael Faes
Browse files

A few fixes

parent 484aabce
......@@ -61,16 +61,16 @@ Sie auch versuchen, die komplette Simulation selber zu implementieren.
Attribut vom Typ `Position` zur Klasse hinzu. Es ist auch bereits ein
Getter vorgegeben, welcher diese Position zurückgeben soll.
Damit kann die GUI den zurückgelegten Pfad einzeichnen. Andererseits muss
gespeichert werden, welche Kreuzungen schon besucht werden. Fügen Sie
gespeichert werden, welche Kreuzungen schon besucht wurden. Fügen Sie
dazu ein zweidimensionales `boolean`-Array als Attribut hinzu. (Ein
Eintrag `false` in diesem Array bedeutet, dass die entsprechende Kreuzung
noch nicht besucht wurde, `true` das Gegenteil.) Zusätzlich brauchen Sie
ein Attribut für den `State` der Simulation. Auch dafür ist ein Getter
vorgegeben, den die GUI verwendet, um zu registrieren, wann ein Durchlauf
zu Ende gegangen ist, und mit welchem Resultat.
_noch nicht_ besucht wurde, `true` das Gegenteil.) Zusätzlich brauchen Sie
ein Attribut für den Zustand, den `State` der Simulation. Auch dafür ist ein
Getter vorgegeben, den die GUI verwendet, um zu registrieren, wann ein
Durchlauf zu Ende gegangen ist, und mit welchem Resultat.
Implementieren Sie die `reset`-Methode, welche diese drei Attribute
initialisiert, d. h. für einen neuen Durchlauf der Simulation bereit
initialisiert, d. h. sie für einen neuen Durchlauf der Simulation bereit
macht. Der Wolf startet in der Mitte der Stadt, die Kreuzungen sind zu
Beginn alle unbesucht (ausser die in der Mitte) und der Zustand lautet zu
Beginn `ON_THE_RUN`.
......@@ -78,24 +78,25 @@ Sie auch versuchen, die komplette Simulation selber zu implementieren.
3. Implementieren Sie zum Schluss das Herzstück der Simulation, die
`step`-Methode. Diese wird so lange wiederholt aufgerufen, bis `getState`
nicht mehr `ON_THE_RUN` zurückgibt, und soll einen einzigen Schritt des
Wolfs simulieren. Dieser besteht aus vier Teilen.
Wolfs simulieren. Ein solcher besteht aus vier Teilen.
Als Erstes wird eine zufällige, _noch nicht besuchte_ Richtung ausgewählt.
Das können Sie z. B. so machen, dass Sie eine zufällige Richtung
auswählen, mittels des `boolean`-Arrays prüfen, ob diese schon besucht
wurde, und, falls ja, das Ganze wiederholen. Versuchen Sie es mit einer
`do`-`while`-Schleife und denken Sie an die `values`-Methode, welche jede
Enum-Klasse zur Verfügung stellt.
Das können Sie z. B. so implementieren, dass Sie eine zufällige Richtung
auswählen, die aktuelle Position in diese Richtung verschieben und mittels
des `boolean`-Arrays prüfen, ob diese Position schon besucht wurde. Falls
ja, wird das Ganze wiederholt. Versuchen Sie es mit einer
`do`-`while`-Schleife und denken Sie an die `values`-Methode, welche
die `Direction`-Klasse automatisch zur Verfügung stellt.
Als Zweites wird die Position des Wolfs aktualisiert, entsprechend der
eben gewählten Richtung. Da `Position`-Objekte unveränderbar sind
(schliesslich ist `Position` eine Record-Klasse), ersetzen Sie die
vorherige Position mit einem neuen Objekt.
Als Drittes wird die Kreuzung, an der sich der Wolf neu befindet, als
besucht markiert.
Als Drittes wird die Kreuzung, an der sich der Wolf neu befindet, im
`boolean`-Array als besucht markiert.
Und als Letztes wird geprüft, ob der Wolf an der neuen Position nun
Und als Letztes wird geprüft, ob der Wolf an der neuen Position bereits
entkommen ist oder gefangen wurde. Der vorherige Zustand der Simulation
wird entsprechend durch eines der `State`-Konstanten ersetzt. Der erste
Check ist relativ einfach: Der Wolf ist entkommen, wenn er sich in einer
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment