Odpowiedzi:
Istnieje wiele różnych sposobów tworzenia labiryntów. Jest ich ogromna lista i ich opisy tutaj: http://www.astrolog.org/labyrnth/algrithm.htm
Myślę, że użyłem tego opisanego pod „Perfect”.
Wolę ciasno zwinięte labirynty, które tworzy Algorytm Kruskala.
Standardowy opis algorytmu Kruskala jest nieodpowiedni, ponieważ nie rozróżnia on lokalizacji na wykresie od grup lokalizacji, opierając się na grze słów o wyborze struktury danych, co prowadzi do dwuznaczności opisu, które dezorientują nowicjuszy. Dlatego odrzucam terminologię Kruskala.
Użyję następujących terminów:
Z nich otrzymujemy:
Wikipedia ma świetny zasób na temat generowania labiryntu . Korzystam z algorytmu losowych prymów ze świetnymi wynikami. Algorytm podziału wygląda interesująco, ale nigdy go nie użyłem.
Oto przykład Wikipedii z Prim's w pracy.
Jednym prostym sposobem jest sporządzenie listy ścian północnych i zachodnich, a następnie ich permutację. Nadaj każdemu pokojowi numer. Następnie wysadź jedną ze ścian na liście, o ile dwa pokoje nie mają tego samego numeru, a następnie propaguj jeden z numerów do wszystkich innych pokoi o tym samym numerze. Idź dalej, aż zabraknie ci ścian. Działa to w przypadku prostokątnych labiryntów lub, w rzeczywistości, każdego innego labiryntu, w którym można podać listę „potencjalnie połączonych pokoi”. Ponadto programowanie jest dość proste.
Przyjrzałbym się również niektórym algorytmom używanym w rozwoju Roguelike. W Rogue Basin jest dobry zasób początkowy
Dobry bieg tutaj: https://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/
Podstawowe kroki to:
Zapytałeś, którego użyłem, więc postaram się na nie odpowiedzieć. Użyłem rekurencyjnego algorytmu cofania w mojej labiryncie w Rootbeer Games .
Jest to dowód na to, że użyłem algorytmu, nie traktuj go jako reklamy mojej pracy.