5.3 (optional): Debugger nutzen in einem irregulären Labyrinth#

Ziel des Tasks#

Einführen in die Arbeit mit einem Debugger und dabei die unterliegende Datenstruktur aufdecken.

Aufgabe 3: Debuggen eines irregulären Labyrinths#

Im vorherigen Abschnitt gehorchte das Labyrinth den Gesetzen der Geometrie. In diesem Abschnitt wird diese Beschränkung gelockert. Dadurch liegen die MazeCells nicht mehr in einem schönen rechteckigen Raster, in dem die Bewegungsrichtungen den natürlichen Himmelsrichtungen entsprechen, sondern können auch anders angeordnet sein.

Die zweite Hälfte von main enthält einen Code, der so ein verwinkeltes Labyrinth erzeugt, das mit der Konstante kYourName personalisiert ist. Wie zuvor muss eine Abfolge von Schritten gefunden werden, mit denen die drei Gegenstände aufgesammelt werden. Die Vorgehensweise ist ähnlich wie in der vorherigen Aufgabe: über einen Haltepunkt soll im Debug-Modus das Labyrinth erkundet werden.

Anders als im vorigen Abschnitt hilft jedoch nicht mehr die Intuition zur Geometrie des Labyrinths. Nehmen wir zum Beispiel an, dass vom Startpunkt aus nach Norden gegangen wurde. In der erreichten Zelle ist es aber durchaus möglich, dass man sich nur nach Osten oder nach Westen bewegen kann. Eine dieser Richtungen wird einen wieder an den Ausgangspunkt zurückbringen, aber es ist nicht klar welche.

Hier kommen die Speicheradressen ins Spiel: Intern ist jedes Objekt in C++ mit einer Speicheradresse verknüpft. Darüber können Objekte und die Cells identifiziert werden. Um das Labyrinth sinnvoll zu erkunden, sollte diese ID/Adresse mitgeschrieben werden in einem Kreis. Beim Erkunden sollten Pfeile zwischen den Kreisen hinzu, die die Richtung angeben, in die sie zeigen. Dies braucht etwas Zeit und Geduld, aber mit ein wenig Mühe sollte so das gesamte Labyrinth erfasst werden können.

Grundlegende Struktur#

Anweisungen

  1. Setzen eines Haltepunkt an der angegebenen Zeile in main und ausführen des Programm im Debug-Modus.

  2. Zeichnen des verwinkelten Labyrinths auf einem Blatt Papier.

  3. Finden einer Escape-Sequenz und ändern der Konstante kPathOutOfTwistyMaze am Anfang von main.cpp.

  4. Testen des Pfads (mit ausgeschaltetem Debugger) über aufrufen der Funktion isPathToFreedom.

Referenzen#

Dies Task ist abgewandelt von einem Task des Stanford-Kurses 106B/X zur Programmierung in C++.