Es gibt sogenannte "perfekte" Labyrinthe - sie besitzen von einem beliebigen Punkt zum anderen genau einen Weg, es gibt also keine Schleifen oder unerreichbaren Stellen:
1.Euer Programm soll rechteckige, perfekte Labyrinthe beliebiger Größe erzeugen (möglichst zufällige und nicht nur "Schneckenlabyrinthe"
)
2. Damit es nicht so langweilig wird
, sollte das Programm sich noch 2 Punkte nehmen (zufällig oder vom Benutzer angeben lassen) und einen Lösungsweg dazwischen finden
3.Ein Output (Konsole oder grafisch) wäre zur Kontrolle ganz gut.
Lasst euch nicht abschrecken - so groß ist die Aufgabe nicht (ca. 300 Zeilen C, wobei bei mir noch Speichern/Laden in einem bestimmten Format und paar Aspekte mehr implementiert wurden).
Code:
+-++-++-+
| || |
+ ++-++ +
+ ++-++ +
| || |
+-++ ++ +
+-++ ++ +
| |
+-++-++-+
1.Euer Programm soll rechteckige, perfekte Labyrinthe beliebiger Größe erzeugen (möglichst zufällige und nicht nur "Schneckenlabyrinthe"

Man nehme an, jede Zelle hätte 4 Wände. Am Anfang sind bei jeder Zelle alle Wände aufgerichtet und die Zellen somit voneinander getrennt.
Jetzt wird eine Zelle zufällig ausgewählt und der Algorithmus verbindet Schritt für Schritt die aktuelle Zelle mit einer unbesuchten Nachbarzelle (dabei die entsprechenden Wände entfernen).
Das wird dann solange gemacht, bis keine unbesuchte Zelle mehr übrig ist.
Weitere Stichworte: Tiefensuche und Backtracking.
Jetzt wird eine Zelle zufällig ausgewählt und der Algorithmus verbindet Schritt für Schritt die aktuelle Zelle mit einer unbesuchten Nachbarzelle (dabei die entsprechenden Wände entfernen).
Das wird dann solange gemacht, bis keine unbesuchte Zelle mehr übrig ist.
Weitere Stichworte: Tiefensuche und Backtracking.
2. Damit es nicht so langweilig wird

Code:
S=Start,E=End und die "." markieren den Weg
+-++-++-+
| ||E .|
+ ++-++ +
+ ++-++ +
| ||.|
+-++ ++ +
+-++ ++ +
| S|
+-++-++-+
Hier sind wieder Tiefensuche mit Backtracking angesagt - zumindest liefert das recht schnell eine Lösung 
Man probiert also (rekursiv) alle Richtungen aus und merkt sich bei Erfolg den Weg

Man probiert also (rekursiv) alle Richtungen aus und merkt sich bei Erfolg den Weg
3.Ein Output (Konsole oder grafisch) wäre zur Kontrolle ganz gut.
Code:
+-++-++-++-++-++-++-++-++-++-+
| || || |
+ ++-++-++-++ ++ ++-++ ++ ++ +
+ ++-++-++-++ ++ ++-++ ++ ++ +
| || || || || || |
+ ++-++ ++-++-++-++ ++ ++-++ +
+ ++-++ ++-++-++-++ ++ ++-++ +
| || ||. . .|| |
+-++-++ ++ ++-++ ++-++-++-++ +
+-++-++ ++ ++-++ ++-++-++-++ +
|. .||. .|| ||. .|| || |
+ ++ ++ ++-++ ++-++ ++ ++-++ +
+ ++ ++ ++-++ ++-++ ++ ++-++ +
|.||.||. .||. S||.|| || |
+ ++ ++-++ ++ ++ ++ ++-++ ++ +
+ ++ ++-++ ++ ++ ++ ++-++ ++ +
|.||.|| . .|| ||. .|| |
+ ++ ++-++-++-++-++-++ ++ ++-+
+ ++ ++-++-++-++-++-++ ++ ++-+
|E||. . . . . . .|| |
+-++-++-++-++-++-++-++-++-++-+