lehrkraefte:blc:informatik:glf24:laby:labyrintklasse

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
lehrkraefte:blc:informatik:glf24:laby:labyrintklasse [2025/05/13 09:03] – created Ivo Blöchligerlehrkraefte:blc:informatik:glf24:laby:labyrintklasse [2025/06/05 08:31] (current) – [Aufgabe 1] Ivo Blöchliger
Line 1: Line 1:
 ====== Labyrinth Klasse ====== ====== 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.1747127028.txt.gz
  • Last modified: 2025/05/13 09:03
  • by Ivo Blöchliger