Question

J'essaie de créer un générateur de labyrinthe aléatoire en JavaScript.

Il peut déjà y avoir des exemples de travail, mais j'essaie de résoudre celui-ci moi-même (enfin, autant que possible)

Le problème que j'ai, c'est que mon script ne fonctionne que pour quelques blocs puis s'arrête.

Je pense que le problème concerne ma compréhension de l'explication que je suis (à partir de cette page Wikipedia http://en.wikipedia.org/wiki/maze_generation_algorithme)

Cet algorithme est une version randomisée de l'algorithme de Prim.

  1. Commencez avec une grille pleine de murs.

  2. Choisissez une cellule, marquez-le dans le labyrinthe.

  3. Bien qu'il y ait des murs dans la liste:

    1. Choisissez un mur aléatoire dans la liste. Si la cellule sur le le côté opposé n'est pas encore dans le labyrinthe:

      1. Faites du mur un passage et marquez la cellule sur le le côté opposé Dans le cadre du labyrinthe.

      2. Ajoutez les murs voisins de la cellule à la liste des murs.

    2. Si la cellule sur le le côté opposé était déjà dans le labyrinthe, retirez le mur de la liste.

Comme je l'ai éclairé, mon problème est avec le le côté opposé partie de cela. Cela signifie-t-il une cellule adjacente qui figure dans notre liste de mur? Ou cela signifie-t-il autre chose?

Je l'ai essayé avec des cellules adjacentes et elle finit par se bloquer.

Toute idée serait appréciée.

Si je peux le faire fonctionner, je publierai le code quand c'est fait. Tout comme je l'ai dit, je veux aller aussi loin moi-même avant d'obtenir de l'aide avec une solution complète.

Était-ce utile?

La solution

Un mur représente la connexion entre deux cellules différentes. Lorsque vous ajoutez un mur à votre liste de mur, c'est parce que vous visitez une cellule qui fera partie de votre labyrinthe, donc quand il se réfère à l'inverse, cela signifie la cellule «derrière» ce mur, où un passage mènerait à si Ce mur n'était pas là.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top