public class CartaPoker {
    private final int palo;
    private final int figura;
    public static final int PALO_PICAS = 1;
    public static final int PALO_CORAZONES = 2;
    public static final int PALO_TREBOLES = 3;
    public static final int PALO_DIAMANTES = 4;
    public static final int NUM_PALOS = 4;
    public static final int FIGURA_ACE = 1;
    public static final int FIGURA_JACK = 11;
    public static final int FIGURA_QUEEN = 12;
    public static final int FIGURA_KING = 13;
    public static final int NUM_FIGURAS = 13;
    CartaPoker(int palo, int figura) {
        this.palo = palo;
        this.figura = figura;
    }
    CartaPoker() {
        this((int) (Math.random() * NUM_PALOS) + 1,
             (int) (Math.random() * NUM_FIGURAS) + 1);
        // Best practice
        // Hay que usar this(). Usar CartaPoker() daria error.
        /*
        // Esto tambien funcionaria. Pero es chapusilla.
        this.palo = (int) (Math.random() * NUM_PALOS) + 1;
        this.figura = (int) (Math.random() * NUM_FIGURAS) + 1;
        */
        // Math.random() devuelve 0.0 .. 1.0
    }
    public String getColor() {
        switch (this.palo) {
            case PALO_PICAS:
            case PALO_TREBOLES:
                return "negra";
                // break; // ERR: Unreachable statement
            case PALO_CORAZONES:
            case PALO_DIAMANTES:
                return "roja";
            default:
                return "ERR!";
                // Deberia ser una excepcion
        }
    }
    public String figuraToString() {
        switch (this.figura) {
            case FIGURA_ACE:
                return "As";
            case FIGURA_JACK:
                return "Jack";
            case FIGURA_QUEEN:
                return "Queen";
            case FIGURA_KING:
                return "King";
            default:
                return "" + this.figura;
                // Truco para pasar de num a String
                // return this.figura;
                // ^ Incompatible types: int cannot be converted to String
                // return Integer.toString(this.figura);
                // Funcionaria pero es mas largo
        }
    }
    public String paloToString() {
        switch (this.palo) {
            case PALO_PICAS:
                return "picas";
            case PALO_TREBOLES:
                return "treboles";
            case PALO_CORAZONES:
                return "corazones";
            case PALO_DIAMANTES:
                return "diamantes";
            default:
                return "ERROR!";
                // Deberia ser una excepcion
        }
    }
    @Override
    public String toString() {
        return this.figuraToString() + " de " + this.paloToString() +
                " (carta " + this.getColor() + ")";
    }
}
