On regarde devant soi#
Ici, plus de caillou. La fourmi doit parcourir un long couloir, comment faire ?
from laby.global_fr import *
Laby(niveau="2a")
Il est bien sûr possible de copier plusieurs fois la commande avance()
mais il existe de meilleures solutions.
Ci dessous, on introduit une nouvelle commande et on vous montre un exemple d’utilisation
regarde(); // Renvoie Vide, Caillou, Mur, Toile ou Sortie
// selon ce qui se trouve sur la case devant la fourmi
from laby.global_fr import *
carte = """
o o o
o ↓ x
o o o
"""
Laby(carte=carte)
while regarde() == Mur:
droite()
ouvre()
La fonction regarde()
permet de « regarder » ce qui est devant la fourmi, elle renvoie un objet python décrivant la case que l’on peut comparer à plusieurs variables prédéfinies.
Mur
Vide
Caillou
Mur
Toile
Sortie
On utilise ensuite une boucle while
ce qui signifie Tant que
while condition:
instructions
Signifie : Tant que condition
est vraie, on répète les instructions
. Dans l’exemple précédent, le programme signifie « Tant que la fourmi regarde un mur, tourner à droite »
Ci-dessous un autre exemple
from laby.global_fr import *
carte = """
o o o
o ↓ x
o r o
o o o
"""
Laby(carte=carte)
while regarde() != Sortie:
droite()
ouvre()
Ici le !=
signifie « est différent de ». Le programme se traduit donc par : « Tant que la fourmi ne regarde pas la porte, tourner à droite. Puis ouvrir la porte. ».
Attention aux détails :
on met toujours « : » après la condition
les instructions (pour l’instant une seule mais on peut en mettre plusieurs) s’écrivent sous le while en « indentant » le début des lignes avec 4 espaces
ce qui est écrit au même nieau que le
while
(dans l’exemple, leouvre()
) s’exécute quand on est sorti de la boucle
En vous inspirant de ces exemples, résolvez le problème suivant, attention la taille du couloir n’est pas fixée ! Votre programme doit fonctionner dans tous les cas (exécutez plusieurs fois la cellule créant le labyrinthe, votre programme doit continuer de marcher.
from laby.global_fr import *
from random import randint
l = randint(2,20)
carte = "o " + "o " * l + "o\n"
carte+= "o " + "→ " + ". " * (l-1) + "x\n"
carte+= "o " + "o " * l + "o\n"
Laby(carte = carte)