Percorrer pelas colunas

O objetivo desta série de exercícios é fazer o buggle percorrer o mundo dele. Deve numerar as células por onde passa para mostrar a ordem do caminho.

O loop principal do seu código deve ser algo como:

 enquanto não estiver na posição final
   vá à próxima posição
   rotule a célula com um número

Ao contrário dos exercícios que vimos até agora, não vamos usar os métodos forward(), recuar() e similares. Ao invés disto, vamos calcular as coordenadas da próxima posição de buggle e usar o método setPos(x, y) para teletransportar o buggle diretamente para esta posição. Por exemplo, setPos(3, 5) teletransporta o buggle à célula onde x=3 e y=5.

A sua primeira tarefa é escrever uma função booleana a indicar se o buggle alcançou a posição final ou não, ou seja, se alcançou o canto inferior direito do mundo. Para isto, pode usar getWorldWidth() e getWorldHeight() que retornam respetivamente a largura e altura do mundo. O seu teste deve comparar a posição atual do buggle (que pode acessar com getX() e getY()) com as dimensões do mundo.
Cuidado, a primeira linha e coluna são numeradas com 0 e não com 1 e o ponto (0,0) fica no canto superior esquerdo. Isto pode parecer estranho, mas é bem comum em ciência da computação.

Então, tem que escrever o código para alcançar a próxima posição. Neste exercício, tem que percorrer o mundo linha após linha. Logo, se está no fundo de uma linha, tem que mover ao topo da próxima, caso contrário tem que mover à célula abaixo.

Neste ponto, pode lançar o seu programa para verificar se o buggle percorre corretamente o mundo na ordem esperada e que pára quando tem que parar. Use oo botão stop se o buggle não parar corretamente.

Agora é hora de escrever os números das células. Para isto, vai precisar de um contador a iniciar em zero no começo do seu código e incrementar de um em cada passo (por exemplo com counter += 1;). Então, terá que usar writeMessage() para escrever o valor no chão.

Provavelmente vai precisar escrever o primeiro [!java|scala|c]ou último [/!]valor fora do loop principal [!java|scala|c], a depender se prefere usar um while ou um do/while[/!].

É asua vez...