Carta.java 5.42 KB
Newer Older
1
import javax.lang.model.element.Element;
2 3 4
import javax.print.DocFlavor.STRING;
import java.util.Arrays;

Oscar committed
5 6 7
public class Carta {
	public String valor;
	public String palo;
8 9 10
    public String suit = "";
    public String values = "";
    public Carta(){
11
        valor = "";
12 13
        palo = "";
    }
14
    //Constructor que puso el profe con intenciones que desconozco
Oscar committed
15 16
	public Carta(String completo)
    {
17 18
        this.valor = valor + ordenarCadena(String.valueOf(completo.charAt(0)));
        this.palo = palo + ordenarCadena(String.valueOf(completo.charAt(1)));
Oscar committed
19
    }
20 21
    //Guarda todos los valores de palo de las cartas en un solo string para guardarlos
    public void armarPalos(String carta){
22
        suit = ordenarCadena(suit + ordenarCadena(String.valueOf(carta.charAt(1))));
23 24 25
    }
    //Guarda todos los valores de las cartas en un solo string para trabajarlos
    public void armarValores(String valores){
26 27
        values = ordenarCadena(values + String.valueOf(valores.charAt(0)));
        
28
    }
29 30
    public String getSuit(){
        return suit;
31
    }
32 33
    public String getValue(){
        return values;
34
    }
35 36 37 38 39
    //Segunda cosa que puso el profe con intenciones desconocidas para la mente promedio
    String valorPalo()
    {
        return this.valor + this.palo;
    }
40 41
    //*************CONTROLA QUE JUGADA SE DA EN LOS PALOS
    public int controlPalos(String palos){
42 43 44 45 46 47 48 49 50 51
        int contador = 0;
        for (int i = 0; i < palos.length(); i++) {
            for (int j = 0; j < palos.length(); j++) {
                if (palos.charAt(i) == palos.charAt(j)) {
                    contador++;
                }
            }
        }
        return contador;
    }
52 53
    //***********CONTROLA QUE JUGADA SE DA EN LOS VALORES
    public String controlValor(String valores){
54 55
        int contador = 0;
        int secuencial = 0;
56
        boolean thereIsLetter = false;
57 58 59 60 61 62 63
        for (int i = 0; i < valores.length(); i++) {
            for (int j = 0; j < valores.length(); j++) {
                if (valores.charAt(i) == valores.charAt(j)) {
                    contador++;
                }
            }
        }
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
        if (contador < 6) {
            //controla que existan letras en los valores mandados
            for (int i = 0; i < valores.length(); i++) {
                String l = String.valueOf(valores.charAt(i));
                if (l == "T" || l == "J" || l == "Q" || l == "K" || l == "A") {
                    thereIsLetter = true;
                    break;
                }
            }
            //Una condicional para el caso que existan letras
            if(thereIsLetter == false){
                //Para mejor entendimiento visual lo guardo en una variable de nombre mas corto
                String v = getValue();
                if ( (v.equals("89JQT")) || (v.equals("9JKQT")) || ((v).equals("AJKQT")) ||(v.equals("2345A")) || (v.equals("789JT")) ||(v.equals("6789T"))){
                    return "ESCALERA";
                }
            }else{
                for (int i = 1; i < valores.length(); i++) {
                    if (valores.charAt(i) == valores.charAt(i-1) + 1) {
                            secuencial++;   
                    }                
                }
                if (secuencial == 4) {
                    return "ESCALERA";
                } 
            }   
        }else if (contador == 17) {
            return "POKER";
        }else if(contador == 13){
            return "FULL";
        }else if(contador == 11){
            return "TRIO";
        }else if(contador == 9){
            return "PAR DOBLE";
        }else if(contador == 7){
            return "PAR";
        }
        return "NADA";
102 103 104
    }
    //Valora la mano y devuelve un resultado final (depende en su totalidad de otros metodos)
    public String valoracionMano(){
105
        if (controlPalos(getSuit()) == 25 && controlValor(getValue()).equals("ESCALERA")){
106
            return "ESCALERA COLOR";
107 108 109 110 111 112 113 114 115 116 117 118 119 120
        }else if(controlPalos(getSuit()) < 25 && controlValor(getValue()).equals("POKER")){
            return "POKER";
        }else if (controlPalos(getSuit()) < 25 && controlValor(getValue()).equals("FULL")) {
            return "FULL";
        }else if (controlPalos(getSuit()) == 25 && controlValor(getValue()).equals("NADA") ) {
            return "COLOR";
        }else if (controlPalos(getSuit()) < 25 && controlValor(getValue()).equals("ESCALERA") ) {
            return "ESCALERA";
        }else if (controlPalos(getSuit()) < 25 && controlValor(getValue()).equals("TRIO") ) {
            return "TRIO";
        }else if (controlPalos(getSuit()) < 25 && controlValor(getValue()).equals("PAR") ) {
            return "PAR";
        }else if (controlPalos(getSuit()) < 25 && controlValor(getValue()).equals("PAR DOBLE") ) {
            return "PAR DOBLE";
121 122
        }
        return "NADA";
123
    }
124 125 126 127 128 129 130 131 132
    //Recibe un string y lo ordena segun orden numerico o alfabetico
    public String ordenarCadena(String original){
        String numeroAOrdenar = original;
        numeroAOrdenar = original;
        char[] chars = numeroAOrdenar.toCharArray();
        Arrays.sort(chars);
        String cadenaOrdenada = new String(chars);
        return cadenaOrdenada;
    }
133
    public static void main(String[] args) {
134

135 136 137 138 139
        Carta cartas = new Carta();
        String [] mano = new String []{"TH","JH","QH","KH","AH"};
        for (int i = 0; i < mano.length; i++) {
            cartas.armarPalos(mano[i]);
            cartas.armarValores(mano[i]);
140
        }
141
        System.out.println(cartas.valoracionMano());
142
    }
Oscar committed
143 144
}