São Paulo - SP
Pessoal, como eu já disse antes estou tentando fazer um joguinho tipo snake, pensei numa solução que implementa uma lista encadeada em que cada parte do corpo é um no da lista e vc tem nós que seguem do começo até o fim da lista nudando a direção dos nós fazendo com que a cobra faça curvas, o que vc acham? Tenho duas classes, na verdade minha dúvida é o método getNoFinal, o que vc acham dele?
public class NoFinal {
NoFinal proximo;
Object data;
String direcao;
public NoFinal ( NoFinal proximo, String direcao ){
this( proximo, null, direcao );
}
public NoFinal (NoFinal proximo, Object data, String direcao){
this.data = data;
this.direcao = direcao;
this.proximo = proximo;
}
public NoFinal getNoFinal ( NoFinal no) { //achei isso estranho, mas
return no; // usei para
} //receber referência no
public Object getData(){
return data;
}
public void setDirecao( String direcao ){
this.direcao = direcao;
}
public String getDirecao( ){
return direcao;
}
public NoFinal getProximo(){
return proximo;
}
public void setProximo(NoFinal proximo){
this.proximo=proximo;
}
}
import javax.swing.*;
public class CorpoDaCobra {
NoFinal cabeca, corpo, rabo, indicaCabeca;
ImageIcon imagem = new ImageIcon(getClass().getResource("corpo.gif"));
public CorpoDaCobra ( ){
rabo = new NoFinal (null, imagem, "prafrente");
corpo = new NoFinal (rabo, imagem, "prafrente");
cabeca = new NoFinal (corpo, imagem, "prafrente");
indicaCabeca = new NoFinal ( cabeca , "prafrente" );
}
public void fazCurva ( NoFinal curva, String direcao, NoFinal parte ){
parte.setDirecao(direcao);
curva.setProximo(parte.getProximo());
parte = parte.getNoFinal(parte.getProximo()); //aqui uso o método
while ( curva.getProximo() != null ){ // estranho
this.fazCurva( curva, direcao, parte );
}
}
public void setCurva ( String direcao ){
NoFinal curva = new NoFinal ( this.cabeca, direcao );
this.fazCurva( curva, direcao, this.cabeca );
}
public static void main ( String [] args ){
CorpoDaCobra cobra = new CorpoDaCobra( );
System.out.println(cobra.rabo.getProximo());
System.out.println(cobra.rabo.getDirecao());
cobra.setCurva( "prabaixo" );
System.out.println(cobra.rabo.getDirecao());
}
}
Luiz Claudio F. dos Santos