/** /* @name: findPathTo /* @version: 1.0 /* @Descrition: encontra um caminho do ponto de inicio até o ponto final e retorna uma pilha contendo os passos. */ public Path findPathTo(ponto2D pontoInicio, ponto2D pontoFim) { /** ve se o no atual é o fim, se sim, empilha e retorna pilha de movimentos. caso contrário atualiza os nós proximos. Se o no proximo já existe, tenta atualizar Caso o euristic value for menor, sobrescreve. caso contrário, cria no e bota os valores. adiciona cada proximo a lista de abertos se puder. pega o proximo no, repete. */ AEstrelaNode inicio = new AEstrelaNode(null, pontoInicio, pontoInicio); AEstrelaNode posicaoAtual = inicio; while (!posicaoAtual.gridPosition.isEqual(pontoFim)) { vistaNode(posicaoAtual, pontoInicio, pontoFim); posicaoAtual = this.proximo(pontoFim); } Path saida = new Path(posicaoAtual.passosAteInicio); while (posicaoAtual != inicio) { saida.empilha(posicaoAtual.gridPosition); posicaoAtual = posicaoAtual.parent; } return saida; }