lehrkraefte:blc:informatik:glf24:laby:wegfindentodo

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:glf24:laby:wegfindentodo [2025/05/14 14:56] – [Aufgabe 10] Ivo Blöchligerlehrkraefte:blc:informatik:glf24:laby:wegfindentodo [2025/06/19 07:48] (current) Ivo Blöchliger
Line 35: Line 35:
 </code> </code>
   * Damit kann die Bildinformation von jeder Zelle angefragt werden.   * Damit kann die Bildinformation von jeder Zelle angefragt werden.
-  * Fügen Sie folgende Funktion (nach den import-Zeilen) ein, um eine Startzelle mit Bildwert 1 (schwarz) zu finden:+  * Importieren Sie zusätzliche die Klasse ''Zelle'' indem Sie folgende Zeile am Anfang vom Programm hinzufügen: 
 +<code python> 
 +from zelle import Zelle 
 +</code> 
 +  * Fügen Sie folgende Funktion (nach den «''from ... import ...''»-Zeilen) ein, um eine Startzelle mit Bildwert 1 (schwarz) zu finden:
 <code python> <code python>
 def findStart(l:Laby)->Zelle: def findStart(l:Laby)->Zelle:
Line 91: Line 95:
     * Der zweite Teil bestimmt den Weg vom Ziel zum Start und macht eine Liste aus allen Zellen (in der korrekten Reihenfolge).     * Der zweite Teil bestimmt den Weg vom Ziel zum Start und macht eine Liste aus allen Zellen (in der korrekten Reihenfolge).
   * Führen Sie jetzt ''main.py'' aus. Eventuell müssen/können Sie den Namen der .pnm-Datei anpassen.   * Führen Sie jetzt ''main.py'' aus. Eventuell müssen/können Sie den Namen der .pnm-Datei anpassen.
 +  * Der Weg soll jetzt noch markiert werden und alle Wände, ausser jenen für den Weg, geschlossen werden.
 +  * Fügen Sie dazu folgende Funktion nach den imports in der Datei ''wegaufbild.py'' hinzu:
 +<code python>
 +def labyrinthNurMitWeg(laby:Laby, weg:list[Zelle]) -> None:
 +    # Alle Markierungen löschen
 +    laby.clearMarks()
 +    # Alle Wände schliessen
 +    laby.closeAll()
 +    # Weg-Zellen mit # markieren
 +    for zelle in weg:
 +        zelle.mark = "#"
 +    # Wände auf dem weg öffnen
 +    for i in range(len(weg)-1):      # Vom ersten bis vorletztem Weg-Element
 +        d = weg[i].dirTo(weg[i+1])   # Richtung des Wegs an Stelle i
 +        weg[i].zustand(d, True)      # Wand in diese Richtung öffnen
 +</code>
 +  * In der Datei ''wegaufbild.py'', zu unterst, untermittelbar vor dem ''return'', rufen Sie die Funktion wie folgt auf:
 +<code python>
 +    labyrinthNurMitWeg(laby, weg)
 +</code>
 +  * In der Datei ''main.py'', fügen Sie als letzte Zeile ''print(laby)'' hinzu, um das Labyrinth auszugeben.
 +  * Testen Sie das Programm ''main.py''.
 +  * Als letztes sollen noch die Wände von Start- und Zielzelle nach aussen geöffnet werden. Fügen Sie die beiden folgenden Funktionen in der Datei ''wegaufbild.py'' nach den imports hinzu:
 +<code python>
 +def randWandAuf(zelle:Zelle) -> None:
 +    if zelle.y==0:
 +        zelle.zustand(3, True)
 +    elif zelle.y==zelle.laby.hoehe-1:
 +        zelle.zustand(1, True)
 +    elif zelle.x==0:
 +        zelle.zustand(2, True)
 +    elif zelle.x==zelle.lab.breite-1:
 +        zelle.zustand(0, True)
  
 +def raenderOeffnen(paar: list[Zelle]) -> None: 
 +    randWandAuf(paar[0]) 
 +    randWandAuf(paar[1]) 
 +    paar[0].mark="S" 
 +    paar[1].mark="Z" 
 +</code> 
 +  * Rufen Sie die Funktion in der Datei ''wegaufbild.py'' zuunterst, unmittelbar vor dem ''return'' auf: 
 +<code python> 
 +    raenderOeffnen(paar) 
 +</code> 
 +  * Testen Sie das Programm ''main.py''.
  • lehrkraefte/blc/informatik/glf24/laby/wegfindentodo.1747234613.txt.gz
  • Last modified: 2025/05/14 14:56
  • by Ivo Blöchliger