from laby import Laby from random import shuffle from time import sleep # Generiert Markierungen 0-9, A-Z, a-z (bis und mit 61) def zahlZuMarkierung(z): if z<10: return str(z) if z<36: return chr(z-10+ord("A")) return chr(z-10+ord("a")) dirs = [0,1,2,3] l = Laby(6,4) start = l[0,0] # start oben rechts todo = [start] # todo-Liste, im Moment 1 Eintrag while len(todo)>0: # So lange, wie es noch Elemente in der Todo-Liste hat aktuell = todo.pop() # Letztes Element entfernen shuffle(dirs) allesZu = True for dir in dirs: nb = aktuell.nachbar(dir) if nb!=None and nb.mark==" ": aktuell.zustand(dir, True) # Wand öffnen nb.mark="N" # Nachbar markieren todo.append(aktuell) # Da könnte es ja noch in andere Richtungen weiter gehen # Zellen mit aktueller Position in der todo-Liste markieren aktuell.mark = zahlZuMarkierung(len(todo)-1) todo.append(nb) # Den Nachbar als nächstes bearbeiten nb.mark = zahlZuMarkierung(len(todo)-1) print(l) sleep(0.4) # 0.4 Sekunden warten allesZu = False # Es gab noch offene Richtungen break # For-Schleife verlassen if allesZu: # in keine der 4 Richtungen konnte auf ein leeres Feld gegangen werden aktuell.mark='.' print(l) sleep(0.4) print(l)