Zurück zur Zentralseite "Aufwendigere Algorithmen"

Karol im Labyrinth

Karol soll so programmiert werden, dass er selbständig den Weg durch ein beliebiges Labyrinth findet. Der Ausgang soll dabei durch eine Marke gekennzeichnet sein. Erarbeiten Sie mit den folgenden Arbeitsaufträgen Schritt für Schritt eine Lösung und ergänzen Sie damit die Programmvorlage.

Arbeitsauftrag 1

Versuchen Sie sich zuerst allgemein eine möglichst einfache Strategie zu überlegen, mit der man jedes ebene Labyrinth überwinden kann. Vergleichen Sie dann Ihre Idee mit dem Lösungsvorschlag.

Lösung

Arbeitsauftrag 2

Erstellen Sie für den zentralen Teil der Lösungsidee aus Arbeitsauftrag 1 ein Struktogramm.
Verwenden Sie dabei soweit sinnvoll keine Java-Syntax, sondern weitgehend eigene Worte (vgl. Java-Überblick).

Lösung

Arbeitsauftrag 3

Ein Problem bei dieser Vorgehensweise ist, dass Karol keine vordefinierten Methoden hat, die es ihm erlauben festzustellen, was sich rechts bzw. links von ihm befindet. Deshalb müssen zuerst entsprechende, neue "Sensorenmethoden" geschrieben werden.

Schreiben Sie eine Methode istRechtsWand() bzw. istLinksWand(), die durch Rückgabe eines  boolean Wertes angibt, ob sich rechts bzw. links von der aktuellen Position Karols eine Wand befindet.

Tipp         Lösung

Arbeitsauftrag 4

Verwenden Sie im Folgenden die Lösungsidee wie im Arbeitsauftrag 2 als Struktogramm umgesetzt.

Setzen Sie nun die Strategie (Variante rechts und Variante links) aus Arbeitsauftrag 1 mit Hilfe der Methoden aus Arbeitsauftrag 3 in eine Methode durchwandereLabyrinth() um. Das Labyrinth ist überwunden, wenn Karol die Marke am Ausgang erreicht.
Sie können die Methode testen: Verwenden bei der Erzeugung von welt den Konstruktor ohne Parameter, dann erscheint ein Dateiauswahlfenster (Vorsicht: kann hinter anderen Fenstern verborgen sein!), in dem Sie die Welt-Datei labyrinth.kdw, die sich  im Ordner BlueJ-Projekte befindet, angeben können.

Lösung


Zurück zur Zentralseite "Aufwendigere Algorithmen"