8. Peter suit un itinéraire fléché <<< Table des matières >>> 10. Contrôler à l'aide du clavier


9. Peter dans un labyrinthe

Peter s’est aventuré dans un grand labyrinthe . Il n’arrive pas à trouver la sortie, et nous devons l’aider .

Nous allons commencer par créer un nouveau programme . Dans la fenêtre des programmes, cliquez sur le bouton New (Nouveau) . Tapez Way (Chemin) comme nom de programme .

Dans la fenêtre Global Variables and Functions (Variables et Fonctions Globales), nous allons préparer deux items pour le labyrinthe – un mur et une porte . Nous pourrions les dessiner, mais nous pouvons aussi utiliser les items déjà tout prêts qui se trouvent dans la bibliothèque d’items . La bibliothèque est située dans la fenêtre inférieure droite intitulée Library of Variables and Functions (Bibliothèque de variables et fonctions). On y trouve des éléments de donnée comme des nombres, des items, ou des images . Développez (faites s’ouvrir l’arborescence en cliquant sur le « + » encadré) l’élément item et dans le groupe [examples] (exemples), sous-groupe Cottage, trouvez les éléments étiquetés  Door (Porte)  et Wall (Mur) . Faites-les glisser dans la fenêtre Global Variables and Functions (Variables et Fonctions Globales). Ceci est une manière facile et rapide de créer de nouveaux items déjà pourvus d’un nom et prédessinés .

A présent, nous allons créer la feuille du labyrinthe . Faisons un double clic sur l’élément sheet (feuille)  . Nous allons réduire ses dimensions, de façon à ce que le labyrinthe n’ait pas à être trop étendu . Cliquez sur le bouton Dimensions . Une fenêtre de réglage des dimensions apparaît . Tapez 12 pour la largeur et 10 pour la hauteur .

Utilisez les éléments Door (Porte) et Wall (Mur) pour créer le labyrinthe suivant :

Le programme va être basé sur un conditional repeating of commands (répétition conditionnelle des commandes) . Nous voulons que Peter répète ses avancées d’un pas dans l’ensemble du labyrinthe jusqu’à ce qu’il trouve la porte . Dans la condition du cycle, nous utiliserons l’élément item on Peter's position (item à la position de Peter) . Il ressemble à l’élément item in front of Peter (item devant Peter), mais il concerne le carré sur lequel se trouve Peter . On le trouve dans le groupe Peter - extension .

La condition du cycle peut s’exprimer ainsi : "S’il n’est pas vrai que l’item à la position de Peter est la porte, répétez …" Le mot pas (NOT) nous suggère qu’il nous faut ici l’inverse du test d’identité d’item . Pour cela , nous avons un élément appelé  is not valid that (si non valide que) . L’élément est appelé négation logique, et sa fonction est d’inverser le résultat de la comparaison de vraie à faux, et de faux à vrai. Il se trouve dans le groupe calculations (calculs) , sous-groupe logic operations (opérations logiques) .

D’abord nous plaçons l’élément is not valid that (si non valide que) dans la condition de cycle while is valid (tant qu’est valide) . Nous allons y associer l’élément item identity (identité de l’item) , et y insérer les éléments item on Peter's position (item à la position de Peter)  et Door (Porte)  .

Dans le corps du cycle, nous allons faire en sorte que, lorsqu’il se promène dans le labyrinthe, Peter suive au plus près le bord situé à sa droite . Au début du cycle, nous dirons à Peter de tourner à droite en utilisant la commande right (droite) . La commande suivante sera un cycle conditional repeating of commands (répétition conditionnelle de commandes) . Il dira à Peter de tourner à gauche jusqu’au moment où il trouvera un carré sur lequel il puisse marcher . Pour cela, nous utiliserons la commande left (gauche) .

Dans le second cycle (cycle interne), nous testerons s’il y a un carré faisant obstacle devant Peter , c’est-à-dire s’il doit tourner encore à gauche . Le premier carré obstacle est le Wall (Mur) . Peter ne peut pas non plus passer à travers le bord de la feuille . Ceci peut être testé par un élément spécial appelé sheet border (limite de feuille) (situé dans le groupe sheet (feuille)  ). Il est spécial du fait que ce n’est pas une variable de donnée, mais une constante et vous ne pouvez donc pas l’éditer . Sa valeur peut être conservée dans les variables et testée, mais on ne peut la visualiser en la déposant sur la feuille .

Nous avons maintenant deux tests de ce qui se trouve devant Peter, et nous avons besoin de les formuler : "Tant qu’il y a un mur ou une  limite de feuille devant Peter, répéter « left »(gauche)." Le mot ou (OR) est une fois de plus un élément logique — or (ou) , et s’appelle logical sum (somme logique). Il est placé dans le groupe calculations (calculs) , sous-groupe logic operations (opérations logiques) . Nous allons insérer l’élément or (ou) dans la condition du cycle et ajouter deux comparaisons d’items situés devant Peter, avec le mur et avec le bord de la feuille .

A présent Peter est face à un carré vide ; nous devons donc ajouter un dernier élément dans le cycle principal  step (pas) . Ceci dit à Peter d’aller au carré vide .

Finalement, nous allons dire à Peter que, lorsqu’il trouvera la porte, il devra se tourner vers nous et attendre que nous appuyions sur une touche . Derrière (après) le cycle principal, ajoutez les éléments left (gauche) et key input (waits to be pressed) (entrée touche (attend la pression))  . Nous obtenons alors le programme  ci-après :

Démarrez le programme . Peter se promène dans le labyrinthe jusqu’à ce qu’il trouve la sortie . Celle-ci est juste derrière le coin du côté gauche , mais il ne le sait pas et il essaie de trouver la sortie à partir de la droite, ce qui prend un certain temps .

Permutons les éléments left (gauche)  et right (doite)  . Ceci modifie la méthode de recherche de Peter, qui va maintenant suivre au plus près le mur à sa gauche . Dans ce labyrinthe-ci, il trouve bien plus vite la sortie .


8. Peter suit un itinéraire fléché <<< Table des matières >>> 10. Contrôler à l’aide du clavier