Réponses:
Il existe de nombreuses façons de fabriquer des labyrinthes. Il y en a une énorme liste et leurs descriptions ici: http://www.astrolog.org/labyrnth/algrithm.htm
Je pense que j'ai utilisé celui décrit sous "Parfait".
Je préfère les labyrinthes étroitement enroulés que l'algorithme de Kruskal crée.
La description standard de l'algorithme de Kruskal est inappropriée en ce qu'elle ne parvient pas à distinguer les emplacements dans le graphique des groupes d'emplacement, tout en s'appuyant sur un jeu de mots sur le choix de la structure de données, conduisant à des ambiguïtés de description qui déroutent les novices. Par conséquent, je rejette la terminologie de Kruskal.
J'utiliserai les termes suivants:
Et de ceux-ci, nous obtenons:
Wikipedia a une grande ressource sur la génération de labyrinthe . J'ai utilisé un algorithme de prims randomisés avec d'excellents résultats. L'algorithme de division semble intéressant mais je ne l'ai jamais utilisé.
Voici un exemple wikipedia de prim au travail.
Un moyen simple consiste à dresser une liste des murs nord et ouest, puis à les permuter. Donnez un numéro à chaque pièce. Faites exploser l'un des murs de la liste, tant que les deux pièces n'ont pas le même numéro, puis propagez l'un des numéros à toutes les autres pièces portant le même numéro. Continuez jusqu'à ce que vous manquiez de murs. Cela fonctionne pour les labyrinthes rectangulaires ou, vraiment, tout autre labyrinthe où vous pouvez donner une liste de "pièces potentiellement connectées". De plus, c'est assez simple à programmer.
Je voudrais également jeter un oeil à certains des algorithmes utilisés dans le développement Roguelike. Il y a une bonne ressource de départ au bassin Rogue
Il y a une bonne course ici: https://journal.stuffwithstuff.com/2014/12/21/rooms-and-mazes/
Les étapes de base étaient les suivantes:
Vous avez demandé lequel j'ai utilisé, donc je vais m'assurer de répondre à cela. J'ai utilisé l' algorithme Recursive Backtracker dans mon jeu de labyrinthe sur Rootbeer Games .
C'est la preuve que j'ai utilisé l'algorithme, veuillez ne pas le voir comme une publicité de mon travail.