In meinem Spiel sehen wir die Fußböden eines Hauses von der Seite, und der Held kann Aufzüge nehmen - ein Aufzug fährt entweder nach oben (zum nächsten Aufzug nach oben) oder nach unten (zum nächsten Aufzug nach unten), je nach Pfeil als angezeigt, und es sind immer genau zwei Aufzüge miteinander verbunden. Nur so kann sich der Held vertikal bewegen, obwohl er sich horizontal frei bewegen kann. Die Hauskarte ist ein zufälliges 11x5-Raster mit verschiedenen Elementen und unüberwindlichen Wänden ganz links, ganz rechts und manchmal in einer der beiden mittleren Positionen:
Meine Frage: Wie kann ich sicherstellen, dass die Karte immer zufällig und dennoch immer lösbar ist und dass der Held, beginnend auf der linken Seite der unteren Etage, sie immer über einen nach oben weisenden Aufzug in der oberen Etage verlassen kann?
Für das, was es wert ist, verwende ich die Lua-Sprache für die Entwicklung. Vielen Dank!
Der Unterschied zwischen dem, was Sie haben, und einem normalen Labyrinth besteht einfach darin, dass es vertikal nicht benachbarte Verbindungen hat. Ich denke, Sie sollten sich graphbasierte Labyrinth-Generierungsalgorithmen ansehen . Sie müssen einfach eine größere Menge von "angrenzenden Räumen" oder "möglichen Wänden" haben als ein gewöhnliches 2D-Labyrinth, da jedes vertikal ausgerichtete Paar von Bodengitterzellen, das noch keinen dazwischenliegenden Aufzug hat, benachbart ist. Sie könnten dies als ein Diagramm modellieren, in dem das Hinzufügen bestimmter Auftriebskanten nebenbei andere mögliche Auftriebskanten löscht. Einige Algorithmen könnten dadurch verwirrt werden, andere jedoch nicht.
quelle