lehrkraefte:blc:informatik:glf24:laby:labyrintklasse

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.

  • 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ösungsvorschlag

Lösungsvorschlag

a = [80, 114, 111, 98, 105, 101, 114, 101, 110, 32, 83, 105, 101, 32, 101, 115, 32, 100, 111, 99, 104, 32, 101, 114, 115, 116, 32, 109, 97, 108, 32, 115, 101, 108, 98, 101, 114, 46, 46, 46]
print("".join(map(lambda x:chr(x),a)))
  • 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.1748173103.txt.gz
  • Last modified: 2025/05/25 11:38
  • by Ivo Blöchliger