This is an old revision of the document!
Labyrinth Klasse
Falls Sie die Dateien laby.py und zelle.py vor dem 25. Mai heruntergeladen haben, laden Sie diese noch einmal herunter und erstetzen Sie die alten Dateien damit.
Aufgabe 0
- Öffnen Sie das Verzeichnis
labyrinthmit VS-Code (File → Open Folder). - Legen Sie im Verzeichnis
labyrintheine neue Dateiaufgabe0.pyan und kopieren Sie folgendes Python-Programm:
- aufgabe0.py
# Von der Datei laby.py die Klasse Laby importieren: from laby import Laby # Ein Labyrinth-Objekt der Grösse 4x3 erzeugen und in der Variablen lab speichern lab = Laby(4,3) # lab ausgeben # dabei wird die Laby-Funktion __str__ aufgerufen, die die Zeichenkette produziert print(lab) print("Zelle 1,1 in Richtung 0 (d.h. rechts) öffnen (True) und markieren") lab[1,1].zustand(0, True) # Markierung anbringen lab[1,1].mark = ">" print(lab) lab[1,0].zustand(1, True) # Markierung anbringen lab[1,0].mark = "v" print(lab) for richtung in range(4): # Folgende Zeile wiederholen, erst für richtung=0, dann richtung=1, bis und mit richtung=3. print(f"Zelle 1,1 in Richtung {richtung}: {lab[1,1].offen[richtung]}")
- Führen Sie das Programm aus.
- Studieren Sie das Programm und verstehen Sie es.
Aufgabe 1
- Kopieren Sie den Inhalt der Datei
aufgabe0.pyin eine neue Dateiaufgabe1.py. - Passen Sie das Programm in der Datei
aufgabe1.pyso an, dass folgende Ausgabe entsteht. - Entfernen Sie auch allen überflüssigen Code.
+---+---+---+---+---+ | | | | | | +---+---+ +---+---+ | | | | | | +---+---+ +---+---+ | | +---+---+ +---+---+ | | | | | | +---+---+ +---+---+ | | | | | | +---+---+---+---+---+
- Hinweis: Das Programm könnte kompakt mit der Methode
nachbar(dir)geschrieben werden:- z.B. liefert
l[1,1].nachbar(1)die Zelle unterhalb (Richtung 1) der Zelle 1,1. Damit kann dann gleich weiter gemacht werden: - z.B. wird mit
l[1,1].nachbar(1).zustand(1, True)die Wand nach unten der Zelle unterhalb der Zelle 1,1 geöffnet.
Aufgabe 2
- Testen und verstehen Sie das Programm
aufgabe2.py(ebenfalls im Verzeichnislabyrinthzu speichern):
- aufgabe2.py
from laby import Laby l = Laby(10,5) for x in range(l.breite-1): l[x,0].zustand(0, True) print(l)
- Erweitern Sie das Programm so , dass folgendes Labyrinth produziert wird:
+---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+