Ceci est une ancienne révision du document !
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Sortir d'un labyrinthe
Un marcheur est prisonnier d'un labyrinthe. On souhaite l'amener à la sortie. On préférerait donner une méthode qui fonctionne quelque soit le labyrinthe.
Dans cet exercice, on se concentre sur la partie algorithmique.
Pour rendre l'exercice plus agréable, on fournit une interface graphique qui permet de voir le personnage parcourir le labyrinthe.
À la fin vous devrez donc avoir un programme qui affiche le parcours du marcheur à travers le labyrinthe, jusqu'à la sortie.
Le module fourni
Le module exploite Tkinter. Vous pouvez le télécharger : labyrinthe.py
Ce module permet de créer facilement un labyrinthe, de l'afficher à l'écran, d'afficher le marcheur qui parcours le labyrinthe et enfin de manipuler le marcheur.
Import
Vous allez un créer un fichier python, par exemple sortir_laby.py.
Il devra être placer dans le même dossier que labyrinthe.py et commencer par :
from labyrinthe import * speed(50) # réglage de la vitesse
Création de labyrinthe à partir d'un fichier texte
Vous pouvez créer un exemple de labyrinthe avec un fichier texte.
- Les
*sont les murs, - les
Asont les arrivées (au moins une), - le
Dest le départ (exactement un)
Par exemple :
******************** D * * * * * *** * *** * ** * * A * * * * * * * * * * *** * * * ** * * * * * * * * * ********* * * **** * * * ********************
Vous pouvez enregistrer ce texte dans par exemple dans un fichier mon_laby.txt, puis vous pourrez charger ce labyrinthe dans python avec :
load("mon_laby.txt")
Fichier tout fait
Faire un gros labyrinthe est un peu long. Je vous en ai fait un : laby_exemple.txt
Vous pouvez l'utiliser pour vérifier le bon fonctionnement de votre programme.
Base du programme
Votre programme contiendra forcément :
from labyrinthe import *
speed(50) # vitesse ajustée entre 1 et 100
load("mon_laby.txt") # ou un autre fichier...
# vos commandes
# et à la fin
fin()
Mouvements
avancer() # avance d'un pas tourner_gauche() # tourne d'un quart de tour à gauche tourner_droite() # tourne d'un quart de tour à droite
Attention : si vous avancez contre un mur, vous aurez un message d'erreur.
Détection des murs
Vous pouvez aussi tester les cases voisines du marcheur pour savoir ce qu'il peut faire :
mur_devant() # renvoie True s'il y a un mur devant le marcheur mur_a_gauche() # renvoie True s'il y a un mur à gauche mur_a_droite() # renvoie True s'il y a un mur à droite
