lehrkraefte:blc:informatik:glf24:laby:labyrintklasse

This is an old revision of the document!


Labyrinth Klasse

  • 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.
  • Öffnen Sie das Verzeichnis labyrinth mit VS-Code (File → Open Folder).
  • Legen Sie im Verzeichnis labyrinth eine neue Datei aufgabe1.py an und kopieren Sie folgendes Python-Programm:
aufgab1.py
from laby import Laby
 
l = Laby(4,3)
print(l)
for richtung in range(4):
    l[1,1].zustand(richtung, True)
print("Zelle 1,1  ist jetzt rundum offen:")
print(l)
  • Führen Sie das Programm aus.
  • Studieren Sie das Programm und verstehen Sie es.
  • Passen Sie das Programm so an, dass folgende Ausgabe entsteht:
+---+---+---+---+---+
|   |   |   |   |   |
+---+---+   +---+---+
|   |   |   |   |   |
+---+---+   +---+---+
|                   |
+---+---+   +---+---+
|   |   |   |   |   |
+---+---+   +---+---+
|   |   |   |   |   |
+---+---+---+---+---+
  • Hinweis: Das Programm könnte kompakt mit der Methode nachbar(dir) geschrieben werden:
    • z.B. liefert l[1,1].nachbar(1) die Zelle unterhalb 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.1748155258.txt.gz
  • Last modified: 2025/05/25 06:40
  • by Ivo Blöchliger