Seguir as paredes

Agora, o labirinto é um pouco mais complicado. Aleatoriedade pode não ser suficiente, devemos ser espertos!

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

Isto funciona aqui porque não existem ilhas ou paredes isoladas, pois o nosso buggle não vai entrar num loop para sempre sem encontrar o baggle dele.

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 decide seguir a parede à esquerda ou à direita. Simplesmente, a demonstração segue a da esquerda, logo deve fazer o mesmo na sua solução para facilitar a comparação da 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. Deve garantir que o buggle sempre mantenha a pata na parede, mas também que não bata numa parede. Pode controlar a dica para mais informações, mas faça-o apenas se estiver perdido. Tente primeiro fazer sem a dica.

Depois escreva o algoritmo inteiro para percorrer o labirinto passo a passo (a usar keepHandOnSideWall()) até encontrar o biscoito e a saída. Não se esqueça de apanhar o baggle quando o encontrar.

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

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

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