Excel: labyrinthe en VBA

Fermé
printfx000 - 10 août 2011 à 11:35
 printfx000 - 10 août 2011 à 13:22
Bonjour,

je suis actuellement en train de construire un labyrinthe en vba. cependant, j'ai quelques soucis pour en generer un bon sans avoir à faire des retouches manuelles derriere.

Voilà:
mon labyrinthe est un 11*11 (10*10 si l'on exclut les murs limites) avec mon départ sur la cellule (8;2) et l'arrivée sur la cellule (8;10).
les cellules contenant rien ou 1 sont mes chemins et celles contenant le caractère "X" sont mes murs.
le principe est de "creuser dans les cellules "X" pour créer mes chemins.

1) Au début, je remplis toutes mes cases, excepté le départ et l'arrivée avec le caractère "X".
2) Ensuite, je me mets sur la cellule de départ (8;2). ensuite, je lance une boucle qui s'arrête lorsque ma variable i (initialisé à 0) atteint 1000.
3) Je fais un random entre 1,2,3 et 4. chaque chiffre correspondant à une direction (haut,bas,gauche,droite).
4) je regarde si ma direction est disponible, c'est à dire ai aucune case adjacente à ma cellule cible n'est vide:
- Si oui, je vais sur cette cellule et je remplace le "X" par un 1, puis je reviens à l'étape 3.
- Si non, je fais un random sur des coordonnées x et y (compris entre 2 et 10), et je vais me mettre sur la nouvelle cellule selectionné et je repars de l'étape 3.

Le problème, c'est que mes bouts de chemins ne veulent jamais se coller à la fin. J'ai toujours des chemins isolés que je suis obligé de relier manuellement.

Sauriez vous d'où vient le problème, svp ?



A voir également:

2 réponses

Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
10 août 2011 à 11:46
Salut,
Est-ce que tu as une partie de ton code qui dirige ta "cellule chercheuse" (appellons la comme ça) vers ton arrivée ?
Où est-ce que c'est vraiment aléatoire jusqu'au bout ?
0
non, c'est vraiment aléatoire. mais a chaque fois, a la fin de ma boucle, il y a quasiment qu'une seule case manquante pour relier mon départ et mon arrivée, ce que je dois faire à la main.
0