package com.trifulcas.cartas;
public abstract class Carta {
private String palo;
private int numero;
public abstract int getValor();
/**
* @return the palo
*/
public String getPalo() {
return palo;
}
/**
* @param palo the palo to set
*/
public void setPalo(String palo) {
this.palo = palo;
}
/**
* @return the numero
*/
public int getNumero() {
return numero;
}
/**
* @param numero the numero to set
*/
public void setNumero(int numero) {
this.numero = numero;
}
public String toString() {
return palo+" | "+numero;
}
}
package com.trifulcas.cartas;
public class Espanyola extends Carta {
@Override
public int getValor() {
int res = getNumero();
if (res == 11 || res == 12) {
res = 10;
}
return res;
}
}
package com.trifulcas.cartas;
public class Francesa extends Carta {
@Override
public int getValor() {
return getNumero();
}
public void quienSoy() {
System.out.println("Carta de la baraja Francesa");
}
}
package com.trifulcas.cartas;
import java.util.ArrayList;
import java.util.List;
public class Baraja implements JuegoAzar {
private List<Carta> cartas;
public Baraja() {
cartas = new ArrayList<Carta>();
}
public void addCarta(Carta carta) {
if (carta instanceof Francesa) {
Francesa temp=(Francesa)carta;
temp.quienSoy();
}
cartas.add(carta);
}
public int totalValor() {
int res = 0;
for (Carta carta : cartas) {
res += carta.getValor();
}
return res;
}
public String toString() {
String res = "";
for (Carta carta : cartas) {
res += carta + " - ";
}
return res;
}
@Override
public void mezclar() {
System.out.println("Mezclando las cartas");
}
}
package com.trifulcas.cartas;
public interface JuegoAzar {
public void mezclar();
}
package com.trifulcas.cartas;
import java.util.ArrayList;
import java.util.List;
public class Domino implements JuegoAzar{
List<String> piezas;
public Domino() {
piezas = new ArrayList<String>();
}
public void esDomino() {
System.out.println("Dominó");
}
@Override
public void mezclar() {
System.out.println("Mezclando las fichas");
}
}
package com.trifulcas.cartas;
import java.util.ArrayList;
import java.util.List;
public class TestCartas {
public static void main(String[] args) {
Carta sotabastos = new Espanyola();
sotabastos.setPalo("Bastos");
sotabastos.setNumero(10);
System.out.println(sotabastos);
Carta sietepicas = new Francesa();
sietepicas.setNumero(7);
sietepicas.setPalo("Picas");
System.out.println(sietepicas);
((Francesa)sietepicas).quienSoy();
Francesa cuatrotreboles=new Francesa();
cuatrotreboles.setNumero(4);
cuatrotreboles.setPalo("Treboles");
cuatrotreboles.quienSoy();
Carta reyespadas = new Espanyola();
reyespadas.setPalo("Espadas");
reyespadas.setNumero(12);
System.out.println(reyespadas);
Baraja miBaraja = new Baraja();
miBaraja.addCarta(sietepicas);
miBaraja.addCarta(sotabastos);
miBaraja.addCarta(reyespadas);
miBaraja.addCarta(cuatrotreboles);
System.out.println(miBaraja);
System.out.println(miBaraja.totalValor());
JuegoAzar[] juegos= {new Baraja(),new Domino()};
for(JuegoAzar juego:juegos) {
if (juego instanceof Domino) {
((Domino) juego).esDomino();
}
juego.mezclar();
}
}
}