Générateur de labyrinthe

cymas17 Messages postés 2 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 14 avril 2010 - 13 avril 2010 à 22:43
Entropede Messages postés 2 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 13 novembre 2010 - 13 nov. 2010 à 08:02
Bonjour à vous tous.

Je viens ici car je dois créer un générateur de labyrinthe pour l'école et comme langage on me propose le C ou le C++.
Personnellement je ne connais pas trop les 2 donc je ne sais pas ce que vous me conseillerez

Ensuite je vous dit comment je comptais faire le programme et j'aimerais savoir si ça va ou pas :

Je pensais commencer par créer un tableau dynamique à 2 dimensions pour créer une "grille".
Ensuite, je donne un chiffre à chacune de ces cases à l'aide d'une boucle for.
Ensuite, je demande de regarder un mur, et je regarde s'il n'y a pas de "lien" entre les deux cases, c'est à dire je vérifie que le chemin que j'ai commencé à créer ne lie pas ces deux cases.
S'il n'y a pas de lien, je supprime le mur et je donne le même numéro aux deux cases sinon je passe à un autre mur et ainsi de suite jusqu'à ce que le labyrinthe soit tracé

Par contre je sais pas s'il y a moyen d'éviter de passer deux fois sur le même mur avec peut être une valeur booléenne initialisée à false pour chacun des murs et ensuite les passer à true quand on en regarde un.

Donc je voudrais savoir si ce que je propose peut me permettre d'avoir un labyrinthe et me proposer des suggestions car j'ai hâte d'apprendre vos connaissance si vous voulez bien :)

Ensuite, j'aimerais, si vous le vouliez bien, m'aider pour le codage c'est à dire pas me faire le programme mais m'expliquer ce que je dois savoir car en regardant les tutoriels, je me perd ...
Et notamment sur quoi mettre dans quel fichier car j'ai beaucoup de mal à comprendre pourquoi on sépare en plusieurs fichier

Je vous remercie d'avance pour votre compréhension :)

Ps : j'espère que je me suis placé dans la bonne partie du forum

3 réponses

deadhand Messages postés 152 Date d'inscription dimanche 15 octobre 2006 Statut Membre Dernière intervention 27 août 2010 3
14 avril 2010 à 09:10
Salut !

je ne vois pas trop ce que tu entends par :
je vérifie que le chemin que j'ai commencé à créer ne lie pas ces deux cases.


Un labyrinthe est crée au hasard, or dans ton algo, il n'y a apparement pas de changement de direction au hasard. Tu vas en ligne droite, non ?
0
cymas17 Messages postés 2 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 14 avril 2010
14 avril 2010 à 10:08
quand je dit que je vérifie si les cases ne sont pas liés, je veux dire que je vérifie que le chemin que j'ai commencé à faire ne permet pas déjà d'aller de la première case à la deuxième en passant par le début u chemin créer
Ensuite en ce qui concerne le "changement de direction", le mur que je choisis sera pris au hasard donc il pourra s'agir d'un mur en haut, en bas,à gauche ou à droite par rapport à une certaine case

Voila j'espère que tu comprend mieux :)

Mais si tu vois qu'il y a un problème, je suis prêt à prendre une autre solution si tu penses qu'il vaut mieux changer
0
Entropede Messages postés 2 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 13 novembre 2010
13 nov. 2010 à 08:02
Il est un peu tard, mais je comprends très les explications. Il y a longtemps dans un libre d'algo j'ai vu une solution qui ressemble à la tienne.

Une fois après avoir donner un numéro à chaque case, il faut mettre chaque case dans un ensemble seul à lui. On se retrouve avec un matrice à 2 dimentions encore une fois dont l'information de chaque index dans le tableu principal est un tableau comprenant une seul case. Ensuite on choisi une case au hazard et on prend une case au hazard adjacante à cette case et on vérifie si c'est deux case sont dans le même ensemble et si ce n'Est pas le cas, cela signifie qu'il ne sont pas déjà liées par un chemin donc on peut enlever le mur et fusion leur ensemble. Dans le cas contraire on recommence en prenant une autre case au hazard. Jusqu'à ce qu'il ne reste qu'un ensemble avec tout les cases.

Bonn code à tous !

0
Rejoignez-nous