Étape 3 : Préparation pour la résolution
Reprendre votre programme dans un autre fichier : maze_resolution
Pour résoudre un labyrinthe, il faut un labyrinthe...
Nous allons le créer à partir du programme précédent en créant une fonction creer_labyrinthe
, dont l'appel se fera dans le setup
À faire :
Écrire une fonction creer_labyrinthe
en reprenant le code précédent et en veillant à réintroduire une boucle car on ne bénéficie plus de la boucle draw
L'algorithme de cette fonction :
fonction creer_labyrinthe:
current <--- case 0
p (la pile) <--- current
on la met en bleu
tant que la pile n'est pas vide:
current <--- on récupère le sommet de la pile (sans l'éliminer)
voisines <--- la liste des voisines non déjà visitées
si cette liste n'est pas vide:
next <--- l'une d'entre elles
on note next comme visitée
p <--- next
on élimine le mur entre current et next
sinon:
on dépile p dans current
Le setup
est donc :
grid=[]
p=Pile()
w=30
def setup():
'''
'''
size(600,400)
global cols,rows,current
cols=int(width/w)
rows=int(height/w)
#creation du tableau
for j in range(rows):
for i in range(cols):
cell=Cell(j,i,w)
grid.append(cell)
creer_labyrinthe()
Et le draw
:
def draw():
'''
'''
background(51)
for i in range(len(grid)):
grid[i].show()
À faire :
Il faut (dans le setup
) remettre à False
les attributs visited
de nos cases après la création du labyrinthe.
À faire :
Il faut définir l'entrée et la sortie de notre labyrinthe
Toujours dans le setup :
entree <--- la case 0
sortie <--- la dernière case de la liste grid
Il faudra déclarer ces deux nouvelles variables comme globales