====== 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.
* Speichern Sie die Labyrinth-Klasse {{lehrkraefte:blc:informatik:glf24:laby:laby.py}} und die Zell-Klasse {{lehrkraefte:blc:informatik:glf24:laby:zelle.py}} im Verzeichnis ''labyrinth'', wo sich bereits die Datei ''pnmbild.py'', etc. befinden.
===== Aufgabe 0 =====
* Öffnen Sie das Verzeichnis ''labyrinth'' mit VS-Code (File -> Open Folder).
* Legen Sie im Verzeichnis ''labyrinth'' eine neue Datei ''aufgabe0.py'' an und kopieren Sie folgendes Python-Programm:
# 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.py'' in eine neue Datei ''aufgabe1.py''.
* Passen Sie das Programm in der Datei ''aufgabe1.py'' so 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.
for xy in range(4):
lab[2,xy].zustand(1, True) # Nach unten öffnen
lab[xy,2].zustand(0, True) # Nach rechts öffnen
for richtung in range(4):
lab[2,2].zustand(richtung, True)
lab[2,2].nachbar(richtung).zustand(richtung, True)
===== Aufgabe 2 =====
* Testen und verstehen Sie das Programm ''aufgabe2.py'' (ebenfalls im Verzeichnis ''labyrinth'' zu speichern):
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:
+---+---+---+---+---+---+---+---+---+---+
| |
+---+---+---+---+---+---+---+---+---+---+
| |
+---+---+---+---+---+---+---+---+---+---+
| |
+---+---+---+---+---+---+---+---+---+---+
| |
+---+---+---+---+---+---+---+---+---+---+
| |
+---+---+---+---+---+---+---+---+---+---+
Packen Sie for-Schleife für die $x$-Koordinate in eine weitere for-Schleife für die $y$-Koordinate.