Foros del Web » Programación para mayores de 30 ;) » Java »

Dudas con interfaz

Estas en el tema de Dudas con interfaz en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/05/2011, 14:50
 
Fecha de Ingreso: mayo-2011
Mensajes: 8
Antigüedad: 13 años
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.
  #2 (permalink)  
Antiguo 19/05/2011, 00:30
 
Fecha de Ingreso: abril-2011
Mensajes: 12
Antigüedad: 13 años
Puntos: 1
Respuesta: Dudas con interfaz

Yo soy bastante novato tambien, asi que las cosas que te digo tambien pueden estar equivocadas.

Si como dices, casilla es una interfaz, no deberias poder instanciarlo. en cuanto al array, añade todas las casillas da igual el tipo, y luego cuando la vayas a recuperar utiliza un cast:

Casilla tmpCasilla = (Casilla) array.get(i);

asi te deberia dejar acceder a los metodos.

¿Que quieres comprobar que tipo?

puedes utilizar:

if (array.get(i) instanceof CasillaGeneral){
CasillaGeneral casillaGeneral = (CasillaGeneral) array.get(i);
}


si yo lo hiciera, tendria 2 clases, Propiedadey Evento, ambas que implementaran la interfaz Interface casilla, con varios metodos comunes, como las situaciones de cuando cae.

la clase Propiedadserian las propiedades que puedes comprar
Los Eventos, casilla que no pueden ser propiedad de nadie y no cambian (Como la carcel, el retira una carta sorpresa y tal)

Pero no me hagas caso que soy muy novato xDD

un saludo.

Última edición por yashauo; 19/05/2011 a las 01:12
  #3 (permalink)  
Antiguo 19/05/2011, 09:50
 
Fecha de Ingreso: mayo-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 0
Respuesta: Dudas con interfaz

Muchas gracias por tu respuesta. Lo he probado y así puedo acceder perfectamente a los atributos de cada casilla. Una cosita más que he aprendido porque esto de tener que aprender java por tu cuenta es un poco complicado.

Muchas gracias otra vez y un saludo.

Etiquetas: dudas, interfaz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:32.