Seguindo as paredes

Neste momento, o labirinto é um pouco mais complicado. Aleatoriedade pode não ser suficiente, sejamos mais espertos!

A boa notícia é que este labirinto é mais simples do que pode parecer à primeira vista: cada parede é conectada às outras. para sair deste tipo de labirinto, o buggle tem que simplesmente seguir uma parede (a que fica à sua esquerda ou à sua direita, não importa). Enquanto manter uma pata na parede, o buggle deve se mover para a frente até encontrar a saída do labirinto e o biscoitinho que ele tanto gosta.

Isto funciona aqui por que não existem ilhas ou paredes isoladas, logo o nosso buggle não vai entrar num loop para sempre sem encontrar seu baggle.

Objetivo do exercício

O objetivo deste exercício é escrever um algoritmo que permita que o buggle saia do labirinto.

Como dito anteriormente, não importa se você decide seguir a parede na esquerda ou da direita. Simplesmente, a demonstração segue a da esquerda, logo você deve fazer o mesmo em sua solução para facilitar a comparação de sua solução e da demonstração.

Escreva um método keepHandOnSideWall() que faz o buggle andar uma casa para a frente enquanto mantém a pata na parede do lado selecionado. Você deve garantir que o buggle sempre mantenha a pata na parede, mas também que ele não bata numa parede. Você pode checar a dica para mais informações sobre isto, mas faça isto apenas se você estiver perdido. Tente primeiro fazer sem a dica.

Então, escreva o algoritmo inteiro para percorrer o labirinto passo a passo (usando keepHandOnSideWall()) até encontrar o biscoito e a saída. Não esqueça de pegar o baggle quando o encontrar.

Quando seu buggle tem uma parede à esquerda, existem três situações a considerar, dependendo das paredes em volta. A tabela a seguir explica cada situação inicial, e onde você deve deixar seu buggle parar após cada passo.

Caso 1 Caso 2 Caso 3
Situação inicial
Onde é o próximo passo

Se você faz um right() em qualquer caso no final da sua função, é possível escrever ela com 3 linhas com um loop while.