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, PetitCaillou, Mur,
                # Toile, PetiteToile, Sortie, ou Inconnu
                # selon ce qui se trouve sur la case devant la fourmi
from laby.global_fr import *
carte = """
o x o
o ↓ o
o o o
"""
Laby(carte=carte)
regarde()
Tile(name='wall', char='o')
La fonction regarde() permet de « regarder » ce qui est devant la fourmi, elle renvoie un
objet Python décrivant le contenu de la case devant la fourmi. On peut ensuite comparer
ce contenu avec plusieurs valeurs prédéfinies :
Mur
Tile(name='wall', char='o')
Vide
Tile(name='void', char='.')
Caillou
Tile(name='rock', char='r')
PetitCaillou
Tile(name='nrock', char='ŕ')
Toile
Tile(name='web', char='w')
PetiteToile
Tile(name='nweb', char='ẃ')
Sortie
Tile(name='exit', char='x')
On va maintenant utiliser une boucle while (Tant que en anglais) :`
while condition:
    instructions
qui signifie : Tant que condition est vraie, on répète les instructions.
Dans le programme suivant, cela donne «Tant que la fourmi regarde un mur, tourner à droite»:
from laby.global_fr import *
carte = """
o x o
o ↓ o
o o o
"""
Laby(carte=carte)
debut()
while regarde() == Mur:
    droite()
ouvre()
Ci-dessous un autre exemple
from laby.global_fr import *
carte = """
o x o
o ↓ o
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, le- ouvre()) 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)
### BEGIN SOLUTION
debut()
while( regarde() == Vide ):
    avance()
ouvre()
### END SOLUTION
