Labyrinthes

É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 :

1
fonction creer_labyrinthe:
2
   current <--- case 0
3
   p (la pile) <--- current
4
   on la met en bleu
5
   tant que la pile n'est pas vide:
6
      current <--- on récupère le sommet de la pile (sans l'éliminer)
7
      voisines <--- la liste des voisines non déjà visitées
8
      si cette liste n'est pas vide:
9
         next <--- l'une d'entre elles
10
         on note next comme visitée
11
         p <--- next
12
         on élimine le mur entre current et next
13
      sinon:
14
         on dépile p dans current

Le setup est donc :

1
grid=[]
2
p=Pile()
3
w=30
4
def setup():
5
    '''
6
    '''
7
    size(600,400)
8
    global cols,rows,current
9
    cols=int(width/w)
10
    rows=int(height/w)
11
    #creation du tableau
12
13
    for j in range(rows):
14
        for i in range(cols):
15
            cell=Cell(j,i,w)
16
            grid.append(cell)
17
    creer_labyrinthe()

Et le draw :

1
def draw():
2
    '''
3
    '''
4
    background(51)
5
    for i in range(len(grid)):
6
        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

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimer Stéphan Van Zuijlen Licence de documentation libre GNURéalisé avec Scenari (nouvelle fenêtre)