viernes, 26 de mayo de 2017

Práctica final 1 juego cartas siete y media 2016-2017

Clase Carta:

package es.unex.cum.edi.PracticaFinal;

/**

* Clase abstracta que contendrá carta alemana,carta francesa y carta española

* @author Ricardo Meza Díaz

*

*/

public abstract class Carta {

//Atributos:

//Path al nombre de la imagen de la celda cuando está dada la vuelta (Nose usará para nada, pero por si se hiciera gráficamente.

protected String imagenReverso;

//Path al nombre de la imagen de la celda cuando se muestra (No se usar para nada, pero por si se hiciera gráficamente).

protected String imagenFrontal;

/*

* Indica el valor de la carta.En el atributo se define como char,pero en el getValor hay que ponerlo como float.

* Puede valer:

* ▪ Carta Española: 1,2 ,3 4, 5, 6, 7, Sota (S), Caballo (C), Rey (R)

* ▪ Carta Francesa: 1,2 ,3 4, 5, 6, 7, 8 , 9 , 10 (A), y tres figuras, que se llaman Valet(V), Dame (D) y Roi (R).

* ▪ Carta Alemana: Consiste en un mazo de 36 naipes o cartas, clasificadas en cuatropalos. La numeración es: del 6 al 10 (X), Unter (U), Dame (D), König (K) y Daus(A)

*/

protected char valor;

//Indica si la carta esta “boca-abajo” .

protected boolean oculta;

/**

* Contructor por defecto.Inicializa por defecto los valores de los atributos de esa clase.

*/

public Carta(){

imagenReverso= ""; //También se puede inicializar como, imageReverso= new String();

imagenFrontal=""; //También se puede inicializar como, imageReverso= new String();

valor= ' '; //Ojo! ' ' va con un espacio entre ellas.

oculta=false; //Es recomendable inicializarla a false siempre.

}

/**

* Constructor parametrizado.Inicializa los valores recibisos por parametros.

* @param imagenReverso Foto de la parte trasera de la carta

* @param imagenFrontal Foto de la parte delantera de la carta

* @param Valor Numero o letra de carta

* @param Oculta SI está boca-abajo o boca-arriba

*/

public Carta(String imagenReverso,String imagenFrontal,char valor,boolean oculta){

this.imagenReverso=new String(imagenReverso);

this.imagenFrontal=new String(imagenFrontal);

this.valor=valor;

this.oculta=oculta;

}

/**

* Devuelve el valor(la ubicación de la imagen) del atributo imagenReverso

* @return String con la imagen de la parte de atrás de la carta.

*/

public String getImagenReverso(){

return imagenReverso;

}

/**

* Devuelve el valor(la ubicación de la imagen) del atributo imagenFrontal

* @return String con la imagen de la parte frontal de la carta.

*/

public String getImagenFrontal(){

return imagenFrontal;

}

/**

* Devuelve el valor(el numero o letra) de la carta.Ojo! es abstract el método porque se va desarrollar este método en la clases Carta Francesa,Española y Alemana.

* Cada una tienen sus propias letras y numeros.

* @return float como la representacion numerica de la carta caracter dependiendo de si está boca-abajo o boca-arribaque será una letra o un número de la carta.

*/

public abstract float getValor();

/**

* Devuelve el valor de si la carta está boca a bajo o boca arriba.Es decir, un valor numérico asociada a la carta que será usado posteriormente.

* @return boolean que será un true o un false dependiendo de si está boca-abajo o boca-arriba.

*/

public boolean getOculta(){

return oculta;

}

/**

* Cambia el estado de la carta.

* @param oculta True boca-abajo.False boca-arriba.

*

*/

public void setOculta(boolean oculta){

this.oculta=oculta;

}

/**

* Cambia la ubicación de la imagen en el sistema operativo de la parte de atrás de la carta.

* @param imagenReverso modifica la ruta de la foto de detrás de la carta

*/

public void setImageReverso(String imagenReverso){

this.imagenReverso=imagenReverso;

}

/**

* Cambia la ubicación de la imagen en el sistema operativo de la parte de alante de la carta.

* @param imagenFrontal modifica la ruta de la foto de alante de la carta

*/

public void setImageFrontal(String imagenFrontal){

this.imagenFrontal=imagenFrontal;

}

/**

* Cambia el valor de de si esta la carta boca a bajo o boca arriba.

* @param valor de la carta

*/

public void setValor(char valor){

this.valor=valor;

}

/**

* Devuelve una cadena,mostrando los valores de los atributos deseados.

*/

@Override

public String toString(){

return "[Numero/letra de la carta: "+valor+"]";

}

/**

* Redefine el método equals de la clase Object.No olvidar poner @override encima del método.

*/

@Override

public boolean equals(Object o){

//Upcasting

Carta c=(Carta)o;

return this.imagenReverso.equals(c.imagenReverso)&&this.imagenFrontal.equals(c.imagenFrontal)&&this.valor==c.valor&&this.oculta==c.oculta;

}

}