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:
+---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+