Algumas células do mundo são amarelas, mas o seu buggle não pode ficar sobre
estas células. Escreva o código necessário para mover para a frente até que
o chão fique branco. Para isto use o método fornecido
isGroundWhite()
.
O truque é que a maioria dos buggles deste mundo ficam sobre o chão amarelo que eles não gostam. é por isto que eles estão em pânico e cada buggle "rushes" uma célula para a frente, mesmo aqueles que não estavam numa célula amarela no começo. Em outras palavras, mesmo se o chão for branco na primeira célula, ainda vai mover para a próxima célula.
A ideia geral é fazer algo como:
Mover para a frente até estar numa célula branca
A coisa mais difícil é que queremos executar o corpo do loop uma vez, mesmo se já estivermos numa célula branca. Isto é fácil a duplicar o código do loop'antes do loop em si, mas esta é uma má ideia: diplicação de código é um hábito muito ruim e deve evitar isto sempre.
Duplicação de código faz da manutenção de código um pesadelo rapidamente: é fdifícil ler o código e o leitor tem que garantir que nenhuma pequena diferença exista entre as versões. Depurar o código se torna difícil, pois os bugs devem ser consertados em todas as versões. Na verdade, cada modificação do código se torna difícil. Então, na verdade, deve sempre se esforçar para não duplicar o seu código sempre que possível. Mas a boa notícia é que sempre pode...
Algumas linguagens tem construções específicas para isto, mas não a linguagem Python. Sem problemas, podemos fazer isto nós mesmos! Uma boa forma é ter uma variável dedicada a indicar se estamos a entrar no loop a primeira vez ou não, como segue.
primeiraVez = True while primeiraVez or (outras condições): primeiraVez = False (corpo do loop)
Quando primeiraVez
é true, o corpo do loop é executado mesmo se
as outras condições digam o contrário. uma vez que o loop tenha sido
executado uma vez, esta variável vira false e nunca mais impacta na decisão
de entrar ou não no loop.
Num loop while, a condição é calculada antes de qualquer coisa e se for falsa, o corpo do loop nunca é executado. Algumas vezes (mas não muito frequentemente), pode preferir que o corpo do loop seja executado pelo menos uma vez, mesmo se a condição seja inicialmente falsa. Para isto, uma variação do loop while é usada, com a seguinte sintaxe em [!thelang]. [!java|c]Não se esqueça do ponto-e-vírgula (;) depois da condição, que é obrigatório.[/!]
do { ação()[!java];[/!] } while (condição)[!java];[/!][/!]