## 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...