lehrkraefte:blc:informatik:glf25:labyrinthe:wegfindung

Differences

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

Link to this comparison view

Next revision
Previous revision
lehrkraefte:blc:informatik:glf25:labyrinthe:wegfindung [2026/02/15 10:18] – created Ivo Blöchligerlehrkraefte:blc:informatik:glf25:labyrinthe:wegfindung [2026/03/17 08:58] (current) – [Dictionary nach Markierungen] Ivo Blöchliger
Line 2: Line 2:
 Ziel ist es, dass Sie ihren Wegfindungsalgorithmus in Python übersetzen und auf verschiedenen Labyrinthen testen. Ziel ist es, dass Sie ihren Wegfindungsalgorithmus in Python übersetzen und auf verschiedenen Labyrinthen testen.
  
 +
 +<code txt>
 +# aktuelle Position = Startposition
 +# Wiederhole:
 +#   Alle Nachbarfelder der aktuellen Position betrachten
 +#   wenn ein Nachbar mit 'Z' markiert ist:
 +#     Beende mit "Fertig, Weg gefunden!"
 +#   wenn es einen unmarkierten Nachbar nb gibt:
 +#     markiere aktuelle Position mit 'o'
 +#     aktuelle Position ist neu nb
 +#   sonst:
 +#     aktuelles Feld mit 'X' markieren
 +#     wenn es einen Nachbar nb mit 'o' markiert gibt:
 +#       aktuelles Feld ist neu nb
 +#     sonst:
 +#        Beende mit "Fertig, es gibt keinen Weg"
 +</code>
 ===== Nützliche Code Schnipsel ===== ===== Nützliche Code Schnipsel =====
 ==== Labyrinth laden ==== ==== Labyrinth laden ====
Line 44: Line 61:
  
  
 +==== Dictionary nach Markierungen ====
 +Idee: Für jede vorhandene Markierung um eine aktuelle Zelle generiert man eine Liste mit Zellen mit dieser Markierung, z.B.
 +''{'X':[a,b], '.':[c], 'S':[d]}'', .d.h. es gibt zwei Nachbarszellen a,b, die mit 'X' markiert sind, eine mit '.' und eine mit 'S'.
 +
 +<code python>
 +nachbarn = {}   # Leerer dictionary
 +aktuell = l[2,4]                    # eine Zelle des Labyrinths
 +for dir in range(4):                # Alle Richtungen durchgehen
 +    if aktuell.offen[dir]:          # Wand in die Richtung ist offen
 +        nb = aktuell.nachbar(dir)   # Nachbarszelle (oder None, wenn es diese nicht gibt)
 +        if nb!=None:                # Nur wenn es diese Zelle auch gibt (Mauern am Rand könnten auch offen sein)
 +            if nb.mark in nachbarn: # Markierung gibt es schon
 +                nachbarn[nb.mark].append(nb)        # Zur List hinzufügen
 +            else:
 +                nachbarn[nb.mark] = [nb]            # Sonst neue Liste mit einem Eintrag
 +                
 +</code>
 +==== Testen, ob ein Dictionary einen Schlüssel hat ====
 +<code python>
 +d = {"foo":2, "bar":17}
 +if "foo" in d:
 +   print("Schlüssel foo existiert")
 +if not "baz" in d:
 +   print("Schlüssel baz existiert nicht")
 +</code>
  
  • lehrkraefte/blc/informatik/glf25/labyrinthe/wegfindung.1771150732.txt.gz
  • Last modified: 2026/02/15 10:18
  • by Ivo Blöchliger