Outils pour utilisateurs

Outils du site


nsi:tds:sortir_labyrinthe

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nsi:tds:sortir_labyrinthe [2021/09/30 12:47] – ↷ Page déplacée de nsi:projets:sortir_labyrinthe à nsi:tds:sortir_labyrinthe goupillwikinsi:tds:sortir_labyrinthe [2023/09/22 17:03] (Version actuelle) goupillwiki
Ligne 11: Ligne 11:
 ===== Le module fourni ===== ===== Le module fourni =====
  
-Le module exploite Tkinter. Vous pouvez le télécharger : {{ :nsi:projets:laby_tk.py |}}+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. 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.
Ligne 18: Ligne 18:
  
 Vous allez un créer un fichier python, par exemple ''%%sortir_laby.py%%''. Vous allez un créer un fichier python, par exemple ''%%sortir_laby.py%%''.
-Il devra être placer dans le même dossier que ''%%laby_tk.py%%'' et commencer par :+Il devra être placer dans le même dossier que ''%%labyrinthe.py%%'' et commencer par :
  
 <code python> <code python>
-from laby_tk import Laby+from labyrinthe import 
 + 
 +speed(50) # réglage de la vitesse
 </code> </code>
  
-== Création de labyrinthe à partir d'une grille ==+== Création de labyrinthe à partir d'un fichier texte ==
  
-Vous pouvez créer un labyrinthe en donnant une grille :+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)
  
-<code python+Par exemple : 
-grille = [ + 
-"********************", +<code lang-none
-"D          * * *", +******************** 
-"*** * *** * ** * * A", +D          * * * 
-"*   * * * * *  * * *", +*** * *** * ** * * A 
-"* *** *   * * ** * *", +*   * * * * *  * * * 
-"*     * * * * *    *", +* *** *   * * ** * * 
-"*********   * * ****", +*     * * * * *    * 
-"*                *", +*********   * * **** 
-"********************+*                * 
-]+********************
 </code> </code>
  
-Il s'agit d'une grille composée de lignes de texte. Chaque caractère correspond à une case du labyrinthe. Les ''%%*%%'' sont des murs''%%D%%'' est le point de départ qui doit être unique et ''%%A%%'' est l'arrivée. Il peut y avoir plusieurs arrivées. +Vous pouvez enregistrer ce texte dans par exemple dans un fichier {{ :nsi:tds:mon_laby.txt |}}puis vous pourrez charger ce labyrinthe dans python avec :
- +
-Ensuite cette commande crée le labyrinthe :+
  
 <code python> <code python>
-laby = Laby(grille)+load("mon_laby.txt")
 </code> </code>
  
-Toute la suite consistera à manipuler ''%%laby%%''.+== Gros labyrinthe ==
  
-== Création en chargeant un fichier ==+Faire un gros labyrinthe est un peu long. Je vous en ai fait un : {{ nsi:tds:jeux:laby_exemple.txt |}}
  
-Au lieu d'écrire le texte représentant le labyrinthe à l'intérieur du fichier programme, vous pouvez écrire le labyrinthe dans un fichier à part. Par exemple : {{ :nsi:projets:laby_exemple.txt |}}+Vous pouvez l'utiliser pour vérifier le bon fonctionnement de votre programme.
  
-Vous pourrez alors créer votre objet labyrinthe directement en le chargeant :+== Base du programme ==
  
-<code python> +Votre programme contiendra forcément :
-laby = Laby.load('exemple_laby.txt'+
-</code> +
- +
-== Mouvements == +
- +
-Maintenant que ''%%laby%%'' est créé, vous pouvez donner des commandes de mouvement au marcheur qui parcours le labyrinthe.+
  
 <code python> <code python>
-laby.avancer()        avance d'un pas +from labyrinthe import * 
-laby.tourner_gauche() # tourne d'un quart de tour à gauche +speed(50) # vitesse ajustée entre 1 et 100 
-laby.tourner_droite() # tourne d'un quart de tour à droite +load("mon_laby.txt") # ou un autre fichier...
-</code>+
  
-**Attention :** si vous avancez contre un mur, vous aurez une erreur.+# vos commandes
  
-== Détection des murs == 
  
-Vous pouvez aussi tester les cases voisines du marcheur pour savoir ce qu'il peut faire : 
  
-<code python> +et à la fin 
-laby.mur_devant()   renvoie True s'il y a un mur devant le marcheur +fin()
-laby.mur_a_gauche() # renvoie True s'il y a un mur à gauche +
-laby.mur_a_droite() # renvoie True s'il y a un mur à droite+
 </code> </code>
  
-== Maintient de l'affichage == +== Mouvements ==
- +
-Chaque fois que vous donnerez une consigne de mouvement, l'affichage se rafraîchira. Mais à la fin, quand il n'y aura plus de mouvements, la fenêtre graphique disparaîtra. Pour l'empêcher de disparaître, vous disposez de la commande : +
 <code python> <code python>
-laby.fin()+avancer()        # avance d'un pas 
 +tourner_gauche() # tourne d'un quart de tour à gauche 
 +tourner_droite() # tourne d'un quart de tour à droite
 </code> </code>
  
-À n'utiliser qu'à la toute fin !+**Attention :** si vous avancez contre un mur, vous aurez un message d'erreur.
  
-== Accélérer l'affichage ==+== Détection des murs ==
  
-Selon la puissance des machines, il n'est pas toujours évident de régler la vitesse d'affichage. Si vous trouvez l'animation trop lente, vous pouvez accélérer un peu ne utilisant :+Vous pouvez aussi tester les cases voisines du marcheur pour savoir ce qu'il peut faire :
  
 <code python> <code python>
-laby.faster() +mur_devant()   # renvoie True s'il y a un mur devant le marcheur 
-</code> +mur_a_gauche() renvoie True s'il y a un mur à gauche 
- +mur_a_droite() # renvoie True s'il y a un mur à droite 
-Vous pouvez l'utiliser plusieurs fois pour accélérer davantage. +est_A()        renvoie True si le marcheur est sur l'arrivée
- +
-== Un fichier pour commencer == +
- +
-Prenant en compte ce que j'ai dit plus haut, voici un programme qui vous affichera un labyrinthe et fera faire quelques pas au marcheur+
- +
-<code python linenums:1> +
-fichier à placer dans le même dossier que laby_tk.py +
- +
-from laby_tk import Laby +
- +
-grille = [ +
-"********************", +
-"         * * *", +
-"*** * *** * ** * * A", +
-"  * * * * *  * * *", +
-"* *** *   * * ** * *", +
-"    * * * * *    *", +
-"*********   * * ****", +
-"               *", +
-"********************" +
-+
- +
-laby = Laby(grille+
- +
-laby.avancer() +
-laby.avancer() +
-laby.avancer() +
-laby.tourner_droite() +
-laby.avancer() +
-laby.avancer() +
- +
-laby.fin() # fin du programme, maintien de la fenêtre+
 </code> </code>
nsi/tds/sortir_labyrinthe.1632998828.txt.gz · Dernière modification : de goupillwiki