====== Einheit 3: Einfachere Wegfindungsalgorithmen ======
Wir arbeiten weiterhin im Verzeichnis ''labyrinth'', wo auch die Dateien ''laby.py'' und ''zelle.py'' zu finden sind.
===== Aufgabe 3 =====
* Speichern Sie folgendes Programm als ''aufgabe3.py'' im Verzeichnis ''labyrinth'':
from laby import Laby
l = Laby(4,4)
# Aktuelle Zelle, bzw. Start-Zelle
aktuell = l[0,0]
# Zelle mit S markieren
aktuell.mark = "S"
print(l)
while True: # Endlosschleife
fertig = True
for dir in range(4): # Alle Richtungen probieren
nb = aktuell.nachbar(dir) # Nachbar in diese Richtung (oder None, wenn es diesen nicht gibt)
if nb!=None and nb.mark==" ": # Noch keine Markierung?
aktuell.zustand(dir, True) # Wand öffnen
aktuell = nb # weiter gehen
aktuell.mark = "." # Zelle markieren
print(l)
fertig = False
break # for-Schleife beenden
if fertig:
break # while-Schleife beenden
* Führen Sie es aus
* Studieren und verstehen Sie das Programm.
* Können Sie die einzelnen Schritte nachvollziehen und erklären, warum das entstehende Labyrinth so aussieht wie es aussieht?
===== Aufgabe 4 =====
* Im Programm ''aufgabe3.py'', kommentieren Sie die drittletzte Zeile mit dem ''break'' aus (jenes in der for-Schlaufe).
* Können Sie das Resultat vorraussagen?
* Führen Sie das Programm aus. Können Sie das Resultat erklären?
===== Aufgabe 5 =====
* Im Programm ''aufgabe3.py'', stellen Sie die drittletzte Zeile mit dem ''break'' wieder her.
* Fügen Sie folgende Zeile unmittelbar vor der while Schlaufe ein:
dirs = [0,2,1,3]
* Ersetzen Sie dann in der for-Schleife den ''range(4)'' durch ''dirs''.
* Können Sie das Resultat vorraussagen?
* Führen Sie das Programm aus. Können Sie das Resultat erklären?
===== Aufgabe 6 =====
* Immer noch im Programm ''aufgabe3.py'', fügen Sie folgende Zeile als zweite Zeile in der Datei ein:
from random import shuffle
* Fügen Sie dann folgende Zeile unmittelbar vor der for-Schleife ein, und achten Sie auf korrekte Einrückung:
shuffle(dirs)
* Führen Sie das Programm mehrfach aus und erklären Sie das Resultat. Und die ''shuffle''-Funktion macht genau das, was ihr Name sagt.