Seu buggle se perdeu num estranho labirinto, e você deve ajudá-lo a achar a
saída que está representada em laranja. Você não pode simplesmente explicar
o caminho para a saída com algo do tipo
direita();avançar();avançar();avançar()
por que você tem que
salvar dois buggles ao mesmo tempo, que estão presos em mundos similares mas
não iguais. Você pode alternar para o outro mundo usando o combobox acima da
representação do mundo (onde está escrito 'Floresta Fechada' agora), e
selecionar a outra entrada (que deve ler 'Floresta Mais Fechada').
A boa nova é que o caminho para a saída está desenhado no chão. Como você pode ver, o mundo é feito de vários corredores, com baggles no chão. Depois de cada corredor, você deve virar à esquerda se o corredor tiver três baggels ou mais, e virar a direita se tiver apenas 2 ou menos baggles.
Você deve contar exatamente 5 células por corredor. Aquela com a intersecção conta como a última do corredor anterior, não como a primeira depois de você virar.
Logo, a forma geral de seu código deve ser algo como "enquanto não encontrar
a saída, pegue o próximo corredor para decidir se vira à esqueda ou à
direita na próxima intersecção". Você pode determinar se você está na célula
de saída (que é laranja) com o método saídaAlcançada()
fornecido.
Para entrar em um corredor, você tem simplesmente que ir de uma intersecção
para a outra enquanto conta os baggles que vê em seu caminho. O método
"cruzamento()
" diz se seu buggle está ou não numa
intersecção. A complexidade extra é que no começo de um corredor, você está
obviamente numa intersecção, mas você ainda precisa se mover.
[!java|scala|c]Para isto, a forma mais fácil é usar um loop do /
while
(faça / enquanto) ao invés de um loop while
(enquanto) normal para se mover até a próxima intersecção.[/!] [!python]Para
isto, use uma variável extra indicando quando você já entrou no corredor,
como segue. Isto vai garantir que você execute o corpo do loop pelo menos
uma vez (quando o primeiraVez
for verdadeiro) antes de nós
usarmos realmente o valor retornado pelo cruzamento()
para
determinar se continuamos ou não.[/!]
primeiraVez = True while primeiraVez or not cruzamento(): primeiraVez = False (corpo do loop)[/!]
Ah, e quando chegar na saída, não esqueça de dar um passo a mais para sair de fato do labirinto!