Poker.java 8.08 KB
Newer Older
1 2 3 4
import javax.sound.sampled.Port;
import javax.lang.model.element.Element;
import javax.print.DocFlavor.STRING;
import java.util.Arrays;
5
import java.util.List;
6
import java.util.Random;
7

Yovan Martinez committed
8 9
public class Poker {

10 11
    public String suit;
    public String values;
12 13 14 15 16 17 18 19 20
    public Poker(){
        values = "";
        suit = "";
    }
    public String getSuit(){
        return suit;
    }
    public String getValue(){
        return values;
Yovan Martinez committed
21
    }
22
    //Metodo para cargar los valores y los palos
23
    public void setValues(String carta){
24 25
        values = ordenarCadena(values + String.valueOf(carta.charAt(0)));
        suit = ordenarCadena(suit + String.valueOf(carta.charAt(1)));
26 27 28 29 30 31 32 33 34 35 36
    }
    //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;
    }
    //***********CONTROLA LA JUGADA QUE SE DA EN LOS PALOS
Yovan Martinez committed
37
    public String controlPalos(String palos){
38
        int contador = formulaYovan(palos);
Yovan Martinez committed
39
        if (contador == 25) {
40
            return "COLOR";
Yovan Martinez committed
41
        } else {
42
            //Para mejor manejo si no cumple ninguna de las condiciones envia una cadena vacia
43
            return "";
Yovan Martinez committed
44 45
        }
    }
46 47
   //***********CONTROLA QUE JUGADA SE DA EN LOS VALORES
   public String controlValor(String valores){
48
    int contador = formulaYovan(valores);
49 50 51 52 53 54 55 56 57
    int secuencial = 0;
    boolean thereIsLetter = false;
    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;
Yovan Martinez committed
58 59
            }
        }
60
        //Una condicional para el caso que existan letras
61
        if(thereIsLetter == false){
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
            //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 (Character.getNumericValue(valores.charAt(i)) == Character.getNumericValue(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";
87
    } 
88
    //Para mejor manejo si no cumple ninguna de las condiciones envia una cadena vacia
89 90
    return "";
}
91 92 93 94 95 96 97 98 99 100 101 102 103 104
    // este es el único método que tienen que desarrollar
    // para hacerlo, pueden hacer uso de otras clases (si es necesario),
    // pero la corrección del ejercicio será automática en base a este
    // método que está acá
    public String ganadores(List<Carta[] > jugadas){
        System.out.println("Cantidad de jugadas: " + jugadas.size());
        for (Carta[] mano : jugadas) {
            System.out.println("JUGADA ======================");
            for (Carta c : mano) {
                System.out.println(c.valorPalo());
                    }
                }
        return "0";
    }
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
    //Con este metodo controlo de que manera se repite el string que recibe el metodo(Formula de yorhan ;D )
    public int formulaYovan(String cadena){
        int contador = 0;
        for (int i = 0; i < cadena.length(); i++) {
            for (int j = 0; j < cadena.length(); j++) {
                if (cadena.charAt(i) == cadena.charAt(j)) {
                    contador++;
                }
            }
        }
        return contador;
    }
    //Con este metodo le doy valor numerico a la cadena valor
    public int valorCadenaNumerico(String strValue){
        int valorNumerico = 0;
        switch (controlValor(values)) {
            case "89JQT": valorNumerico = 50;
                break;
            case "9JKQT":valorNumerico = 55;
                break;
            case "AJKQT":valorNumerico = 60;
                break;
            case "2345A":valorNumerico = 15;
                break;
            case "789JT":valorNumerico = 45;
                break;
            case "6789T":valorNumerico = 40;
                break;
            default: 
            for (int i = 0; i < array.length; i++) {valorNumerico = Character.valueOf(strValue.charAt(i));}
                break;
        }
        return valorNumerico;
    }


141

Yovan Martinez committed
142 143
    public static void main(String[] args) {

144 145 146 147 148 149 150 151 152 153
        Carta carta1 = new Carta("AA");
        Carta carta2 = new Carta("AA"); 
        Carta carta3 = new Carta("AA");
        Carta carta4 = new Carta("AA");
        Carta carta5 = new Carta("AA");
        Carta carta6 = new Carta("AA");
        Carta carta7 = new Carta("AA"); 
        Carta carta8 = new Carta("AA");
        Carta carta9 = new Carta("AA");
        Carta carta10 = new Carta("AA");
154
        Poker partida = new Poker();
155 156 157 158 159 160
        String [] valores = {"A","2","3","4","5","6","7","8","9","T","J","Q","K",};
        String [] palos = {"D","S","C","H",};
        String [] cartas = new String [10];
        int control = 100;//Variable para controlar el ingreso de cartas repetidas
        Carta [] mano = new Carta[]{carta1,carta2,carta3,carta4,carta5,};
        Carta [] mano2 = new Carta[]{carta6,carta7,carta8,carta9,carta10,};
161

162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184


        while (control > 10) {
            for (int i = 0; i < mano.length; i++) {
                mano2[i].valor = mano2[i].valor.concat(valores[(int)Math.floor(Math.random()*(11-0+1)+0)]);
                mano[i].palo = mano[i].palo.concat(palos[(int)Math.floor(Math.random()*(2-0+1)+0)]);
            }
            for (int i = 0; i < mano2.length; i++) {
                mano2[i].valor = mano2[i].valor.concat(valores[(int)Math.floor(Math.random()*(11-0+1)+0)]);
                mano2[i].palo = mano2[i].palo.concat(palos[(int)Math.floor(Math.random()*(2-0+1)+0)]);
            }
            for (int i = 0; i < mano.length; i++) {
                for (int j = 0; j < mano.length; j++) {
                    if (mano[i].valorPalo().equals(mano[j].valorPalo())) {
                        control++;
                    }
                }
            }
            for (int i = 0; i < mano2.length; i++) {
                for (int j = 0; j < mano2.length; j++) {
                    if (mano2[i].valorPalo().equals(mano2[j].valorPalo())) {
                        control++;
                    }
185
                }
186
            }
187
        }
188 189 190 191 192
        control = 0;
        //Le paso los valores con el metodo del profe
        for (int i = 0; i < mano.length; i++) {
            partida.setValues(mano[i].valorPalo());
        }
193 194
        //Condicional para imprimir los resultados solo si no se encontraron cartas repetidas
        if(control == 5){
195
            if ((partida.controlValor(partida.getValue()) == "") && (partida.controlPalos(partida.getSuit()) == "" )) {
196 197 198 199 200 201 202 203 204 205
                System.out.println("CARTA ALTA");
            }else{
                //Dejo a modo de comentario para posibles comprobaciones o controles
                // System.out.println(partida.getSuit());
                // System.out.println(partida.getValue());
                System.out.print("Sus cartas son: [");
                for (int i = 0; i < mano.length; i++) {
                    System.out.print(mano[i] + ",");
                }
                System.out.print("]\n");
206
                System.out.println("Jugada: " + partida.controlValor(partida.getValue()) + " " + partida.controlPalos(partida.getSuit()));
207 208 209
            }
        }else{
            System.out.println("Jugada invalidas: Se encontraron cartas iguales, por favor intente de nuevo");
210
        }
Yovan Martinez committed
211 212
    }
}