Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

msr

Dúvida com LinkedList

Mensagens Recomendadas

msr

Olá,

Tenho um Individuo a mover-se numa grelha e guardo o registo do caminho que esse Individuo segue nessa grelha. Estou a guardar esse caminho numa LinkedList (uma lista de objectos do tipo Ponto).

Quando esse individuo passa por um ponto em que já esteve,  o resto do caminho é removido. Por exemplo:

Mover para: (1,1) -> caminho {(1,1)}

Mover para: (1,2) -> caminho {(1,1) (1,2)}

Mover para: (1,3) -> caminho {(1,1) (1,2) (1,3)}

Mover para: (1,2) -> caminho {(1,1) (1,2)}

Para isso estou a fazer o seguinte. Para saber a partir de que ponto o individuo se vai mover, faço:

Ponto ultimoPonto = this.caminho.getLast();

Depois de decidir o próximo ponto para onde se vai mover faço:

Ponto proxPonto = aresta.getProxPonto(ultimoPonto); // uma aresta une dois pontos adjacentes

System.out.println("Ponto onde estou: " + ultimoPonto + "  Mover para: " + proxPonto);
this.adicionaPonto(proxPonto);

Sendo que o método adicionaPonto está definido assim:

	public void adicionaPonto(Ponto p){

	LinkedList<Ponto> caminho_aux = new LinkedList<Ponto>();

	ListIterator<Ponto> it = this.caminho.listIterator();
	while(it.hasNext()){
		Ponto p_aux = it.next();

		if(!p_aux.equals(p)){
			caminho_aux.add(p_aux);
		}
		else{
			break;
		}
	}

	caminho_aux.add(p);
	this.caminho = caminho_aux;

	System.out.println("Caminho: " + this.caminho);

}

No entanto com isto não estou a obter o resultado esperado:

Caminho: [(1,1)]

Ponto onde estou: (1,1)  Mover para: (1,2)

Caminho: [(1,1), (1,2)]

Ponto onde estou: (1,2)  Mover para: (1,3)

Caminho: [(1,1), (1,2), (1,3)]

Ponto onde estou: (1,3)  Mover para: (1,2)

Caminho: [(1,1), (1,2)] // CERTO !

Ponto onde estou: (1,3)  Mover para: (2,3) // ERRADO!

Caminho: [(1,1), (1,2), (1,3), (2,3)]

Caminho: [(1,1)]

Ponto onde estou: (1,1)  Mover para: (1,2)

Caminho: [(1,1), (1,2)]

Ponto onde estou: (1,2)  Mover para: (1,3)

Caminho: [(1,1), (1,2), (1,3)]

Ponto onde estou: (1,2)  Mover para: (1,3) // ERRADO!

Caminho: [(1,1), (1,2), (1,3)]

Eu suponho que a falha esteja no metodo adicionaPonto mas não estou a ver onde. Alguma sugestão?

Se eu fizesse um simples this.caminho.add(p); isto funcionava bem (a nivel de movimentos).

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.