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