Comment puis-je créer des cellules ou des grilles en C++ pour une étude randomisée labyrinthe?
Je suis en train de créer une étude randomisée de labyrinthe en C++, mais je ne peux pas parce que je ne sais pas comment faire pour créer des grilles ou des cellules. Comment pourrais-je le créer? Et je tiens également à créer à l'aide de caractères ASCII. comment puis-je stocker dans la gamme? (quelqu'un peut-il donner un exemple de code et quelques explications afin que je puisse mieux le comprendre)
Une autre question: Quelles sont les données stuctures j'ai besoin d'apprendre et de l'utiliser? Je suis à la planification de l'utilisation de Eller de l'algorithme de Kruskal algorithme.
Vous remercier les gars pour m'aider! je suis un débutant programmeur, et je veux apprendre à ce sujet, parce que c'est une partie de mon projet, je vous remercie beaucoup varier!
OriginalL'auteur jessemiel | 2008-12-28
Vous devez vous connecter pour publier un commentaire.
Vous voulez probablement stocker votre labyrinthe dans un 2-dimension tableau de char. Vous pouvez déclarer un tableau avec ou sans l'initialiser en C++.
Vous pouvez changer les valeurs initiales à
'|'
et'-'
pour les murs de votre labyrinthe, et d'utiliser un caractère d'espace,' '
, pour les passages.Soit l'initialisation de la méthode fonctionne, mais vous avez toujours utiliser les éléments de la même façon. Voici comment vous désactivez le conseil d'administration dans l'initialisation de tableau ci-dessus.
Si vous voulez lire la valeur d'un élément (utile lorsque vous essayez de naviguer dans un labyrinthe), vous utilisez le même indice de notation comme lorsque vous êtes à la définition de sa valeur.
OriginalL'auteur Bill the Lizard
Vous êtes à la recherche pour Labyrinthe algorithmes de génération (plus)? Est votre problème avec les algorithmes, ou des graphiques?
Typique des algorithmes de travail par l'examen de chaque "cellule" dans le labyrinthe comme l'un des sommets d'un graphe, commencez avec tous les "murs", et de supprimer un ensemble de murs qui correspond à un découpage de l'arbre. (C'est dans le but de rendre aléatoire, beaucoup d'entre eux commencent avec un poids et trouver le minimum spanning tree.) Pour les petits labyrinthes au moins, vous n'avez pas besoin d'une structure de données pour représenter les cellules, il suffit de penser de chaque cellule comme une paire
(x,y)
(son coördinés). Et vous n'avez pas besoin d'une structure de données (matrice de contiguïté /liste d'adjacence) pour stocker les arêtes du graphe soit, parce que les voisins de(x,y)
sont juste(x,y±1)
et(x±1,y)
(en ignorant ceux qui tombent en dehors des limites).Dans tous les cas, une fois que vous avez le spanning tree, vous savez exactement à qui de la les murs "exister" et qui ne sont pas, de sorte que vous avez une description complète du labyrinthe. Si vous allez dessiner le labyrinthe, vous savez ceux qui de tirer.
De dessiner avec des caractères ASCII, vous venez de passer à travers chaque ligne une par une: dessiner les "hauts murs" (mettre un "
--
" si le mur entre(x,y)
et(x,y+1)
existe), puis tracer la ligne réelle (mettre un "|
" si le mur entre(x,y)
et(x+1,y)
existe). Enfin tracer la limite inférieure.OriginalL'auteur ShreevatsaR
Mur Vertical: |
Horiz. Mur: _
Si vous utilisez les polices à largeur fixe:
Je ne sais pas exactement quoi faire, mais voici où j'avais commencer.
Déterminer où sur votre grille, les points de début et fin sera. Ensuite, créer une voie unique, avec tout ce gribouillis que vous voulez. Fondamentalement, il devrait être un mouvement aléatoire, en vérifiant à chaque fois qu'il y a encore un moyen pour ce chemin pour atteindre la fin. Ensuite, retirer une certaine quantité de murs de ce chemin, et de créer d'autres chemins à partir de ces trous. Continuer jusqu'à ce que vous exécutez hors de l'espace vide. Alors, peut-être, de s'assurer qu'aucune courts chemins ont été créés. S'ils ont, de bloquer ceux-ci.
OriginalL'auteur stalepretzel