Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Labyrinth Klasse ====== <WRAP important> 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. </WRAP> * 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: <code python 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]}") </code> * 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. <code txt> +---+---+---+---+---+ | | | | | | +---+---+ +---+---+ | | | | | | +---+---+ +---+---+ | | +---+---+ +---+---+ | | | | | | +---+---+ +---+---+ | | | | | | +---+---+---+---+---+ </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. <hidden Lösungsvorschläge> <code python> for xy in range(4): lab[2,xy].zustand(1, True) # Nach unten öffnen lab[xy,2].zustand(0, True) # Nach rechts öffnen </code> <code python> for richtung in range(4): lab[2,2].zustand(richtung, True) lab[2,2].nachbar(richtung).zustand(richtung, True) </code> </hidden> ===== Aufgabe 2 ===== * Testen und verstehen Sie das Programm ''aufgabe2.py'' (ebenfalls im Verzeichnis ''labyrinth'' zu speichern): <code python 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) </code> * Erweitern Sie das Programm so , dass folgendes Labyrinth produziert wird: <code txt> +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ | | +---+---+---+---+---+---+---+---+---+---+ </code> <hidden Lösungsvorschlag> Packen Sie for-Schleife für die $x$-Koordinate in eine weitere for-Schleife für die $y$-Koordinate. </hidden> lehrkraefte/blc/informatik/glf24/laby/labyrintklasse.txt Last modified: 2025/06/05 08:31by Ivo Blöchliger