La buggle Petite Poucette

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.[/!]

[!python]
premiereFois = True
while premiereFois or not croisement():
  premiereFois = False
  (le corps de votre boucle)
[/!]

Il vous faut une variable initialisée à zéro et incrémentée à chaque fois que vous voyez un baggle. Une variable utilisée ainsi est souvent appelée un compteur.

N'oubliez pas de remettre le compteur à 0 au début de chaque couloir!

Oh, et quand vous parviendrez à trouver la sortie, n'oubliez pas de faire un pas de plus pour vous échapper effectivement.