This is an old revision of the document!
Einheit 5: Weg auf schwarzen Pixeln erweitern
Die Grundidee ist folgende:
- Man sucht zwei aufeinanderfolgende Zellen im Weg, so dass die beiden Zellen daneben schwarz, aber nicht auf dem Weg sind (z.B. Zellen a und b, oder c und d im folgendend Bild):
+---+---+---+---+---+---+ + | | | | | | d # | +---+---+---+---+---+ +---+ | | | a b | | c | | +---+---+ + +---+ +---+
- Die Wand zwischen a,b wird dann gesetzt, und der Weg über die zwei benachbarten Zellen x, y umgeleitet:
+---+---+---+---+---+---+ + | | | x y | | d # | +---+---+ + +---+ +---+ | | | a | b | | c | | +---+---+ + +---+ +---+
- Das wiederholt man so lange, wie das möglich ist. Die Zellen werden zufällig ausgewählt, damit keine «geraden Korridore» entstehen.
- Damit man nicht alle 4 Fälle programmieren muss, wird mit Operationen auf der Richtung (wie ein Winkel) gearbeitet.
- ist
dirdie Richtung, sind(dir+1)%4und(dir+3)%4die dazu rechtwinkligen Richtungen. - Die Klasse
Zellehat eine MethodedirTo(other), die die Richtung zu einer anderen Zelle berechnet.
- Speichern Sie die Datei wegerweiterung.py im Verzeichnis
labyrinth. - Studieren Sie den Code der Datei
wegerweiterung.py - In der Datei
main.py, importieren Sie die Funktion wie folgt:
from wegerweiterung import wegerweiterung
- Rufen Sie die Funktion am Ende in der Datei
main.pywie folgt auf:
wegerweiterung(weg)
- Zeigen das Labyrinth am Schluss wieder an.
- Testen Sie das Programm
main.py.