Consegui fazer meu explorador percorrer todo o labirinto e imprimir todos os caminhos possíveis, agora preciso separar entre aquele mais curto e mais longo.
Esse tabuleiro tem apenas 3 caminhos possíveis:
(x,y): (6, 2)
(x,y): (5, 2)
(x,y): (4, 2)
(x,y): (3, 2)
(x,y): (2, 2)
(x,y): (1, 2)
(x,y): (0, 2)
Tamanhos 7
Destino Encontrado!!
(x,y): (6, 2)
(x,y): (6, 1)
(x,y): (6, 0)
(x,y): (5, 0)
(x,y): (4, 0)
(x,y): (3, 0)
(x,y): (2, 0)
(x,y): (1, 0)
(x,y): (0, 0)
(x,y): (0, 1)
(x,y): (0, 2)
Tamanhos 11
Destino Encontrado!!
(x,y): (6, 2)
(x,y): (6, 3)
(x,y): (6, 4)
(x,y): (5, 4)
(x,y): (4, 4)
(x,y): (3, 4)
(x,y): (2, 4)
(x,y): (1, 4)
(x,y): (0, 4)
(x,y): (0, 3)
(x,y): (0, 2)
Tamanhos 11
Destino Encontrado!!
Toda vez que ele chega no destino ele imprime essa mensagem.
Essa é a parte do código que ele para quando encontra todos os caminhos e o switch que valida conforme o critério. A outra parte do código é movimento esquerda, baixo, direita e cima.
Preciso validar agora com base nos críterios colocando esse objeto solucaoAtual recebendo todos os caminhos possíveis e chamar no critério1 por exemplo, ai fica assim:
public void criterio1(Solucao solucao){
if(melhor == null || solucao.tamanho() < melhor.tamanho()){
melhor = clone(solucao);
}
}
esse objeto melhor vale null no primeiro caso e depois faço uma cópia do objeto solucao para não modificar o endereço do objeto que tá lá naquele método que se movimenta. No entanto eu fiz um println e ele não faz mais comparações com o segundo caminho que é aquele que tem tamanho 11, será que eu preciso armazenar as cópias dos caminhos em um array ou faço uma outra lista para isso ?