Parcours en colonne

L'objectif de cette série d'exercices est de faire parcourir le monde à la buggle. Elle doit de plus numéroter les différentes cases rencontrées pour montrer son ordre de parcours.

La boucle principale du code que vous devez écrire est de la forme :

 tant que l'on n'est pas à la position finale
   aller à la prochaine position
   marquer le numéro de case au sol

À la différence des exercices vus jusque là, nous n'allons pas utiliser les méthodes avance(), recule() et autres, mais nous allons calculer les coordonnées de la prochaine position de la buggle, et utiliser la méthode setPos(x, y) pour téléporter la buggle directement à cette position. Par exemple, setPos(3, 5) téléporte la buggle sur la case où x=3 et y=5.

Le premier objectif est donc d'écrire une fonction booléenne indiquant si la buggle a atteint la position finale ou non, càd si elle est arrivée en bas à droite du monde. Vous utiliserez pour cela les méthodes getMondeHauteur() et getMondeLargeur() qui retournent respectivement la hauteur et la largeur du monde. Votre test est de comparer les coordonnées actuelles de votre buggle (que vous pouvez retrouver avec les méthodes getX() et getY()) aux dimensions du monde.
Attention, la première ligne et la première colonne sont numérotées 0 au lieu de 1, et l'origine (0, 0) est dans le coin en haut à gauche. Cela peut sembler étonnant, mais ces choses sont traditionnelles en informatique.

Ensuite, il faut écrire le code pour aller à la position suivante. Dans cet exercice, il faut parcourir le monde colonne par colonne. Donc, si on est tout en bas d'une colonne, il faut aller en haut de la colonne suivante. Sinon, il faut aller à la case du dessous.

À ce point, vous pouvez lancer votre programme pour vérifier que la buggle parcours bien le monde dans l'ordre souhaité, et s'arrête bien quand il faut. Pensez à utiliser le bouton stop pour arrêter l'exécution si votre programme ne se termine pas correctement.

Il est temps d'écrire au sol les numéros de case. Pour cela, vous aurez besoin d'un compteur initialisé à zéro au début de votre code, et incrémenté à chaque pas (par exemple avec cpt += 1;). Ensuite, il faut écrire cette valeur au sol (avec ecritMessage()).

Il est sans doute nécessaire d'écrire la valeur de la première[!java|scala|c] ou dernière[/!] case en dehors de la boucle principale[!java|scala|c], selon que vous utilisez une boucle while ou do/while[/!].

À vous de jouer...