Outils pour utilisateurs

Outils du site


nsi:tds:sortir_labyrinthe

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 A sont les arrivées (au moins une),
  • le D est 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
nsi/tds/sortir_labyrinthe.1695127926.txt.gz · Dernière modification : de goupillwiki