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