Foro de elhacker.net

Programación => Java => Mensaje iniciado por: RADIACTIVO en 9 Diciembre 2012, 13:47 pm



Título: Duda con ArrayList<>
Publicado por: RADIACTIVO en 9 Diciembre 2012, 13:47 pm
Buenas, estoy programando en java el juego de las burbujas que tu disparas una burbuja de un color y si la encajas con otras 2 de su mismo color se destruyen, creo que todos lo conocemos.
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  :rolleyes:. 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 :)


Título: Re: Duda con ArrayList<>
Publicado por: Legnak en 9 Diciembre 2012, 21:15 pm
te refieres a esta línea, cierto?

Código
  1. list.add(i,4); //THIS SHOULD BE A POSTION BUT HOW?¿?¿?¿

sería así:
Código
  1. list.set(índice, valor)


Título: Re: Duda con ArrayList<>
Publicado por: RADIACTIVO en 10 Diciembre 2012, 00:53 am
Hola Legnak, muchas gracias por contestar  :) y si esa es la linea, lo que pasa es que yo he creado una clase Position, la clase es tal que asi (va sin constructor adrede)
Código:
public class Position {

public int row;
public int col;

}
y quiero meter dos valores que corresponden a una posicion, y esa es la duda.
Se haria como has puesto :huh:
Muchas gracias otra vez! Saludos


Título: Re: Duda con ArrayList<>
Publicado por: RADIACTIVO en 10 Diciembre 2012, 21:08 pm
Ya lo he rersuelto, pueden cerrar el tema