## Percorrer pelas colunas

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

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

     enquanto não estiver na posição final
       vá para a 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 `avançar()`, `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 para a célula onde x=3 e y=5.

Sua primeira tarefa é escrever uma função booleana indicando se o buggle alcançou a posição final ou não, ou seja se ele alcançou o canto inferior direito do mundo. Para isto, você pode usar `getLarguraDoMundo()` e `getAlturaDoMundo()` que retornam respectivamente a largura e altura do mundo. Seu teste deve comparar a posição atual do buggle (que você 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, você tem que escrever o código para alcançar a próxima posição. Neste exercício, você tem que percorrer o mundo linha após linha. Logo, se você está no fundo de uma linha, você tem que se mover para o topo da próxima, caso contrário você tem que se mover para a célula abaixo.

Neste ponto, você pode lançar seu programa para verificar se o buggle percorre corretamente o mundo na ordem esperada, e que ele 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, você vai precisar de um contador iniciando em zero no começo do seu código, e incrementar de um em cada passo (por exemplo com `counter += 1;`). Então, você terá que usar `escreverMensagem()` para escrever o valor no chão.

Você provavelmente vai precisar escrever o primeiro [!java|scala|c]ou último [/!]valor fora do loop principal [!java|scala|c], dependendo se você prefere usar um `while` ou um `do/while`[/!].

Sua vez...