lehrkraefte:blc:informatik:glf24:laby:labyrintklasse

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 laby.py und die Zell-Klasse zelle.py im Verzeichnis labyrinth, wo sich bereits die Datei pnmbild.py, etc. befinden.
  • Ö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:
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.
  • 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.

Lösungsvorschläge

Lösungsvorschläge

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)
  • Testen und verstehen Sie das Programm aufgabe2.py (ebenfalls im Verzeichnis labyrinth zu 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:
+---+---+---+---+---+---+---+---+---+---+
|                                       |
+---+---+---+---+---+---+---+---+---+---+
|                                       |
+---+---+---+---+---+---+---+---+---+---+
|                                       |
+---+---+---+---+---+---+---+---+---+---+
|                                       |
+---+---+---+---+---+---+---+---+---+---+
|                                       |
+---+---+---+---+---+---+---+---+---+---+

Lösungsvorschlag

Lösungsvorschlag

Packen Sie for-Schleife für die $x$-Koordinate in eine weitere for-Schleife für die $y$-Koordinate.

  • lehrkraefte/blc/informatik/glf24/laby/labyrintklasse.txt
  • Last modified: 2025/06/05 08:31
  • by Ivo Blöchliger