Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question/** Génére un layrnithe parfait **/ public void GenLabyParfait() { // On réinitialise le tableau for (int i = 0; i < 4; i++) { casespossibles[i] = false; } // On recherche les cases possibles casespossibles = RechercheCasesPossibles(); int j = 0; for (int i = 0; i < 4; i++) { if (casespossibles[i] == false) j++; } // Si aucune case n'est possible if (j == 4) { // On regarde qu'on se retrouve pas à la case initiale // (auquel cas la génération du labyrinthe est finie) if (!(pos_actuelle == sortie_position)) { // On retourne à la case précédente pos_actuelle = pos_prec.Pop(); // Et on rappelle l'algorithme de génération avec la nouvelle position GenLabyParfait(); } } // Si au moins un case est possible // => on en choisi une au hasard else { int mur_alea = random.Next(4); while (casespossibles[mur_alea] == false) { mur_alea = random.Next(4); } // Haut if (mur_alea == 0) { // On pose un chemin Carte[pos_actuelle.X, pos_actuelle.Y - 1] = 0; // On stocke notre position actuelle pos_prec.Push(pos_actuelle); // On avance sur cette case pos_actuelle.Y--; } // Droite else if (mur_alea == 1) { // On pose un chemin Carte[pos_actuelle.X + 1, pos_actuelle.Y] = 0; // On stocke notre position actuelle pos_prec.Push(pos_actuelle); // On avance sur cette case pos_actuelle.X++; } // Bas else if (mur_alea == 2) { // On pose un chemin Carte[pos_actuelle.X, pos_actuelle.Y + 1] = 0; // On stocke notre position actuelle pos_prec.Push(pos_actuelle); // On avance sur cette case pos_actuelle.Y++; } // Gauche else if (mur_alea == 3) { // On pose un chemin Carte[pos_actuelle.X - 1, pos_actuelle.Y] = 0; // On stocke notre position actuelle pos_prec.Push(pos_actuelle); // On avance sur cette case pos_actuelle.X--; } // Et on rapelle l'algorithme GenLabyParfait(); } }