18/05/2011, 14:50
|
| | Fecha de Ingreso: mayo-2011
Mensajes: 8
Antigüedad: 13 años, 8 meses Puntos: 0 | |
Dudas con interfaz Hola a todos.
Estoy tratando de crear un monopoly en java pero soy bastante novata en esto y estoy bastante liada. El caso es que estoy intentando rellenar el tablero de juego con distintos tipos de casillas. Hay casillas que se compran (generales) y otras que no se compran (especiales). Yo he creado una interfaz Casilla común a todas. Después he creado una clase CasillaGeneral y otra CasillaEspecial, las cuales implementan la interfaz. Y, por último, he creado las clases con los tipos específicos de casillas: lotería y cárcel (que heredan de CasillaEspecial) y casa, edificio, luz,... (que heredan de CasillaGeneral).
He creado un ArrayList con las casillas finales (casa, edificio, ...) y luego lo he ordenado aleatoriamente. El problema es que el ArrayList es del tipo Casilla y cuando quiero imprimir algún elemento del ArrayList para ver si me lo ha ordenado bien no me deja acceder a los atributos de esas casillas porque me dice que el array es de tipo Casilla que es un interfaz.
Espero que podáis ayudarme. Como no sé si me hee xplicado bien voy a poner un poco lo que he hecho porque me parece bastante reliado y seguro que hay una forma mejor.
El código de la clase Tablero sería algo así:
public class Tablero {
private int num_casillas;
private ArrayList <Casilla> tablero;
private int numCasillasEspeciales;
private int numCasillasGenerales;
public void creaTablero (int num_casillas){
tablero = new ArrayList();
numCasillasEspeciales = getNumeroCasillasEspeciales(num_casillas);
numCasillasGenerales = getNumeroCasillasGenerales (num_casillas, numCasillasEspeciales);
int i =0;
while (i < numCasillasGenerales){ //Vamos rellenando el ArrayList
if (i<numCasillasGenerales){//Comprobamos que no hayamos sobrepasado
CasillaGeneral general = new Casa(i);//el máximo de casillas.
anadirCasilla (general); i++;
}
if (i<numCasillasGenerales){
CasillaGeneral general = new Edificio(i);
anadirCasilla (general); i++;
}
.......
}
i=0;
while (i < numCasillasEspeciales){ //Rellenamos ahora las casillas especiales
if (i<numCasillasEspeciales){
CasillaEspecial especial = new Loteria(i);
anadirCasilla (especial); i++;
}
.......
}
//Lo distribuimos aleatoriamente
Collections.shuffle (tablero); ** Aquí recorrería el array mostrando el tipo de cada casilla para saber si están aleatoriamente**
}
}
public boolean anadirCasilla(Casilla casilla){
return tablero.add(casilla);
}
public int getNumeroCasillasEspeciales (int num_casillas){
.............
}
public int getNumeroCasillasGenerales (int num_casillas, int casillasEspeciales){
...........
}
}
Muchas gracias de antemano. |