lehrkraefte:blc:informatik:glf25:labyrinthe:lib

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:glf25:labyrinthe:lib [2026/02/06 08:45] – [Einrichten] Ivo Blöchligerlehrkraefte:blc:informatik:glf25:labyrinthe:lib [2026/03/03 09:02] (current) Ivo Blöchliger
Line 11: Line 11:
  
 ===== Einrichten ===== ===== Einrichten =====
-Legen Sie einen neuen Ordner an und speichern Sie die beiden folgenden Dateien im neuen Ordner (**Rechtslick -> Ziel speichern unter** oder so ähnlich):+  * Legen Sie einen neuen Ordner an (z.B. mit dem Namen labyrinth), wo dann alle diesbezüglichen Programme gespeichert werden. 
 +  * Speichern Sie die beiden folgenden Dateien im neuen Ordner (**Rechtslick -> Ziel speichern unter** oder so ähnlich, nicht öffnen und kopieren bitte!)
  
 {{lehrkraefte:blc:informatik:glf25:labyrinthe:laby.py}} {{lehrkraefte:blc:informatik:glf25:labyrinthe:zelle.py}} {{lehrkraefte:blc:informatik:glf25:labyrinthe:laby.py}} {{lehrkraefte:blc:informatik:glf25:labyrinthe:zelle.py}}
  
 +===== Hello Laby =====
 +  * Mit VS-Code, öffnen Sie den neuen Ordner labyrinth mit File -> Open Folder. (Das ist der Ordner, der die beiden Dateien ''laby.py'' und ''zelle.py'' enthält).
 +  * Legen Sie dort eine neue Datei ''hello.py'' an.
 +
 +<code python hello.py>
 +from laby import Laby
 +from zelle import Zelle
 +
 +lab = Laby(5,3)
 +print(lab)
 +</code>
 +
 +Die Zeilen mit ''import'' und die Initialisierung des Labyrinths ''lab = Laby(5,3)'' sind in den folgenen Codes der Übersichtlichkeit halber weggelassen.
 +==== Zellen markieren ====
 +<code python>
 +lab[2,1].mark = 'Z'
 +print(lab)
 +print(f"Zelle (2,1) ist mit {lab[2,1].mark} markiert")
 +</code>
 +
 +==== Mauern öffnen/schliessen ====
 +Der erste Parameter gibt die Richtung an, in welche die Mauer geöffnet werden soll (0 rechts, 1 unten, 2 links, 3 oben).
 +<code python>
 +lab[1,1].oeffneMauer(0)
 +lab[2,1].oeffneMauer(1)
 +</code>
 +
 +Ist der zweite, optionale Parameter ''False'', wird die Mauer geschlossen:
 +<code python>
 +lab[2,1].oeffneMauer(1, False)
 +</code>
 +
 +==== Labyrinthe speichern und einlesen ====
 +  * Beispiellabyrinthe gibt es hier: {{lehrkraefte:blc:informatik:glf25:labyrinthe:labs.zip}}. 
 +  * Entpacken Sie die Dateien in ein Unterordner ihres Ordners, wo sich ihre Programme und die Klassen befinden.
 +  * Nennen Sie diesen Ordner ''labs''.
 +
 +**Von Datei laden**
 +<code python>
 +from laby import Laby
 +from zelle import Zelle
 +
 +lab = Laby.load("labs/10x07-06.txt" # Mit Angabe des Unterordners vor dem /
 +print(lab)
 +</code>
 +
 +**In Datei speichern**
 +<code python>
 +# l enthält eine Instanz der Klasse Laby
 +lab.save("meineloesung.txt")
 +</code>
 +
 +===== Aufgaben =====
 +Die Aufgaben (ohne Zusatzaufgaben) sollten von allen gelöst werden. 
 +
 +Die Zusatzaufgaben sind dazu da, damit sich jene mit mehr Übung nicht langweilen ;-)
 +
 +==== Kreuz ====
 +Programmieren Sie in Labyrinth das wie folgt aussieht:
 +<code txt>
 ++---+---+---+---+---+
 +|           |
 ++---+---+   +---+---+
 +|           |
 ++---+---+   +---+---+
 +|                   |
 ++---+---+   +---+---+
 +|           |
 ++---+---+   +---+---+
 +|           |
 ++---+---+---+---+---+
 +</code>
 +
 +**Zusatzaufgabe**: Schreiben Sie ein Programm so, dass es für alle Labyrinthgrössen funktioniert. Hinweise:
 +<code python>
 +breite = l.breite  # Anzahl Zellen horizontal
 +hoehe = l.hoehe    # Anzahl Zellen vertikal
 +
 +print(7//2)  # Ganzzahldivision, wird immer abgerundet, ergibt also 3 (und nicht 3.5)
 +</code>
 +==== Heizkörper ====
 +Produzieren Sie folgendes Labyrinth:
 +<code txt>
 ++---+---+---+---+---+---+---+---+
 +|                               |
 ++---+---+---+---+---+---+---+   +
 +|                               |
 ++   +---+---+---+---+---+---+---+
 +|                               |
 ++---+---+---+---+---+---+---+   +
 +|                               |
 ++   +---+---+---+---+---+---+---+
 +|                               |
 ++---+---+---+---+---+---+---+---+
 +</code>
 +
 +**Hinweis**: 
 +  * Überprüfen ob eine Zahl ''y'' gerade ist: ''if y%2 == 0:''
 +
 +**Zusatzaufgabe**: Programm funktioniert für beliebige Labyrinthgrössen.
 +
 +==== Text ====
 +Programmieren Sie folgende Ausgabe:
 +<code text>
 ++---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 +|       | P | r | o | g | r | a | m | m | i | e | r | e | n |         |
 ++---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 +|               | m | a | c | h | t |                 |
 ++---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 +|               | S | p | a | s | s |                 |
 ++---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
 +</code>
 +**Hinweis**:
 +mit ''<nowiki>for buchstabe in "blabla":</nowiki>'' kann etwas für jeden Buchstaben wiederholt werden.
 +
 +**Zusatzaufgabe**: Das Programm funktioniert mit beliebigen Texten als einzige Vorgabe
 +
 +<code python>
 +# Vorgegebener Text
 +text = "Das geht auch voll automatisiert"
 +
 +# Der Rest ist automatisch
 +woerter = text.split(" "    # Text nach Leerschlägen aufteilen und als Liste speichern.
 +anzahlWoerter = len(woerter)  # Anzahl Wörter
 +
 +lmax = max([len(w) for w in woerter])   # Anzahl Buchstaben im längsten Wort
 +
 +# ...
 +
 +for index, wort in enumerate(woerter):  # Wiederhole für jedes Wort, inkl. index
 +   pass  # Tu erst mal nix
 +</code>
  
  • lehrkraefte/blc/informatik/glf25/labyrinthe/lib.1770367520.txt.gz
  • Last modified: 2026/02/06 08:45
  • by Ivo Blöchliger