Votre buggle est perdue dans un étrange labyrinthe, et elle a besoin de vous
pour trouver la sortie (représentée par les cases orange). Vous ne pouvez
pas lui donner son chemin tout simplement avec quelque chose comme
droite();avance();avance();
parce qu'il faut secourir deux
buggles à la fois, perdues dans des labyrinthes similaires mais
différents. Vous pouvez passer à l'autre monde en cliquant sur le menu
défilant au dessus de l'endroit où est dessiné le monde. C'est là où il est
écrit "Deep Forest" pour l'instant (forêt profonde), et si vous passez à
"Deeper Forest" (forêt encore plus profonde), vous verrez l'autre monde.
La bonne nouvelle est que le chemin vers la sortie est en quelque sorte écrit au sol. Ces mondes sont composés de plusieurs corridors, avec des baggles par terre. À chaque embranchement, il faut prendre à gauche si le corridor qu'on vient de parcourir contient 3 baggles ou plus, ou à droite s'il contient 2 baggles ou moins.
Vous devez compter exactement 5 cases par couloir. Les cases aux intersections doivent être comptées comme les dernières de leur couloir, pas comme les premières après avoir tourné.
La forme générale de votre code doit donc être quelque chose comme «tant que
je n'ai pas trouvé la sortie, prendre le prochain couloir pour décider s'il
faut tourner à gauche ou à droite au prochain embranchement». Vous pouvez
déterminer si vous avez rejoint la sortie (indiquée en orange) avec la
méthode sortieTrouvee()
fournie.
Pour prendre un couloir, il suffit de courir d'une intersection à l'autre
tout en comptant les biscuits en chemin. La méthode
croisement()
indique si vous vous trouvez actuellement à un
embranchement. Ce qui complique un peu, c'est qu'au début du couloir, vous
vous trouvez bien entendu à une intersection, mais vous souhaitez avancer
quand même.
[!java|scala]Le plus simple pour cela est d'utiliser une boucle do /
while
à la place d'une simple boucle while
pour se
déplacer d'une intersection à l'autre.[/!]
[!python]Pour cela, utilisez une variable supplémentaire indiquant si vous
êtes déjà entré dans le couloir, comme dans l'exemple suivant. Ainsi, vous
exécuterez le corps de la boucle au moins une fois (quand
premiereFois
est vrai) tandis qu'aux tours de boucles suivants,
c'est la valeur de retour de croisement()
qui détermine s'il
faut s'arrêter ou non.[/!]
premiereFois = True while premiereFois or not croisement(): premiereFois = False (le corps de votre boucle)[/!]
Oh, et quand vous parviendrez à trouver la sortie, n'oubliez pas de faire un pas de plus pour vous échapper effectivement.