Tengo dos clases. Una clase principal y otra que se llama Position con solo 2 atributos, int row int col, ya que mi tablero por ahora no es mas que una matriz de chars. En uno de los metodos tengo que realizar el calculo de la trayectoria de la bola y meterlos dentro un ArrayList . Sabria resolverlo de otras formas y se me ha ocurrido alguna como pasar los numeros como int dentro de una array normal y ya esta, pero me gustaria que me ayudasen si pueden y me explicasen porque no consigo meter una posicion en mi ArrayList. Se que el codigo es muy largo asi que no se molesten en entenderlo si no quieren. Voy a indicar donde estan los errores, y por favor no pongan solo un codigo, si pueden dejen un poco de teoria para que lo entienda . Muchas gracias de antemano y Saludos!
Código:
//THIS METHOD JUST STORES IN THE ARRAYLIST THE POSITIONS OF THE SHOOT(complete/just how to add to the arraylist)
public static ArrayList<Position> getTrajectoryToTop(char [][] board, Position shootPosition, int DIR){
[b]ArrayList<Position> list = new ArrayList() ;
//THIS PART IS IN CHARGED OF (DEPENDING ON THE DIRECTION) FULLFILL ALL THE TRAJECTORY OF THE BUBBLE
Position c = new Position();[/b]
int fic=0;
int desplazamiento = 0; //This will indicate if it is going to the right or to the left
if((DIR<=4 && DIR>0) || DIR==5){
fic=1;
}else if((DIR<0 && DIR>=-4) || DIR==-5){
fic=-1;
}
int fic_counter = fic;
//ALL THESE LOOPS ARE FOR GETTING THE POSISITIONS INTO THE -ARRAYLIST- AND TO KNOW WHEN IT HAS TO STOP
switch(DIR){
//THIS IS FOR STRIGHT SHOOT
case 0: for(int i=13; i>=1; i--){
if(board[i][4]!=' '){
break;
}
list.add(i,4); //THIS SHOULD BE A POSTION BUT HOW?¿?¿?¿
} break;
default :{
//THIS IFS ARE FOR GETTING IF THE TRAJECTORY IS GOING TO THE LEFT OR THE RIGHT
if(DIR<4){
desplazamiento=-1; //Because it moves to the left
}else if(DIR<4){
desplazamiento=1;
}
int initial_col = 4 + (DIR);
for(int i=13; i>=1; i--){
if(initial_col>0 && initial_col<8){
if(desplazamiento==1){
if(board[i+1][initial_col+1]!=' '){
break;}
}else if(desplazamiento==-1){
if(board[i+1][initial_col-1]!=' '){
break;
}
}
}else if(initial_col==0 || initial_col==8){
if(board[i+1][initial_col]!=' '){
break;
}
fic_counter=fic_counter*(-1);
desplazamiento=desplazamiento*(-1);
}
initial_col=initial_col+fic_counter;
[b]list.add(i,initial_col); }[/b]
}
}
return list;}
Espero que el codigo este claro, he dejado comentarios y si hay algo que no esta convencion y se fijan por favor diganlo que si no no aprendo