Bonsoir,
Voila je dois réaliser un algorithme pour générer automatiquement des labyrinthe. Je voudrais savoir si cet algorithme est correct ou si il y aurai des amélioration à lui apporter....ou s'il ne ressemble a rien même^^. Je suis ouvert à vos critique^^ merci :
Initialisation :
– Une matrice L[N][M] donnée ;
– k ← 0 ;
– Pour i de 0 `a N faire :
Si (i impair et j impair) alors :
| L[i][j]← k ;
| k = k + 1;
| Sinon: L[i][j]← −1 ;
FIN “Si” ;
FIN “Pour” ;
– Pour i de 0 `a N faire :
Si (i impair et j impair) alors :
| L[i][j]← k ;
| k = k + 1;
| Sinon: L[i][j]← −1 ;
FIN “Si” ;
FIN “Pour” ;
Pour NbCasesAZero, le nombre de cases à 0 : NbCasesAZero = 1 ;
Tant que NbCasesAZero < N ×M faire :
| Prendre au hasard (x, y) tel que :
| L[x][y] = −1 et (x impair ou y impair7) ;
Si x impair alors :
d ← L[x][y − 1] − L[x][y + 1] ;
Si d > 0 alors :
| L[x][y] ← L[x][y + 1] ;
| Propager la valeur L[x][y + 1] à partir du point (x, y − 1) (en 4-connexité) pour les
| Cases contenant la valeur L[x][y − 1]8 ;
Sinon, si d < 0 alors :
| L[x][y] ← L[x][y − 1] ;
| Propager la valeur L[x][y − 1] `a partir du point (x, y + 1) (en 4-connexité) pour les
| cases contenant la valeur L[x][y + 1]8 ;
FIN “Si” ;
Sinon (y impair) :
d ← L[x − 1][y] − L[x + 1][y] ;
Si d > 0 alors :
| L[x][y] ← L[x + 1][y] ;
| Propager la valeur L[x + 1][y] `a partir du point (x − 1, y) (en 4-connexité) pour les
| cases contenant la valeur L[x − 1][y]8 ;
Sinon, si d < 0 alors :
| L[x][y] ← L[x − 1][y] ;
| Propager la valeur L[x − 1][y] `a partir du point (x + 1, y) (en 4-connexité) pour les
| cases contenant la valeur L[x + 1][y]8 ;
FIN “Si” ;
FIN “Si” ;
FIN “Tant que”.
FIN “Pour” ;
Partager