Poker.java 7.26 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 38 39 40 41 42 43 44 45 46
    public String controlPalos(String palos){
        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++;
                }
            }
        }
        if (contador == 25) {
47
            return "COLOR";
Yovan Martinez committed
48
        } else {
49
            //Para mejor manejo si no cumple ninguna de las condiciones envia una cadena vacia
50
            return "";
Yovan Martinez committed
51 52
        }
    }
53 54 55 56 57 58 59 60 61
   //***********CONTROLA QUE JUGADA SE DA EN LOS VALORES
   public String controlValor(String valores){
    int contador = 0;
    int secuencial = 0;
    boolean thereIsLetter = false;
    for (int i = 0; i < valores.length(); i++) {
        for (int j = 0; j < valores.length(); j++) {
            if (valores.charAt(i) == valores.charAt(j)) {
                contador++;
Yovan Martinez committed
62 63
            }
        }
64 65 66 67 68 69 70 71
    }
    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
72 73
            }
        }
74
        //Una condicional para el caso que existan letras
75
        if(thereIsLetter == false){
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
            //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";
Yovan Martinez committed
101
    }
102
    //Para mejor manejo si no cumple ninguna de las condiciones envia una cadena vacia
103 104
    return "";
}
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
    // 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";
    }

Yovan Martinez committed
120 121
    public static void main(String[] args) {

122 123 124 125 126 127 128 129 130 131
        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");
132
        Poker partida = new Poker();
133 134 135 136 137 138
        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,};
139

140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162


        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++;
                    }
163
                }
164
            }
165
        }
166 167 168 169 170
        control = 0;
        //Le paso los valores con el metodo del profe
        for (int i = 0; i < mano.length; i++) {
            partida.setValues(mano[i].valorPalo());
        }
171 172 173 174 175 176 177 178 179 180 181 182 183
        //Condicional para imprimir los resultados solo si no se encontraron cartas repetidas
        if(control == 5){
            if ((partida.controlValor(partida.getValue())== "") && (partida.controlPalos(partida.getSuit()) == "" )) {
                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");
184
                System.out.println("Jugada: " + partida.controlValor(partida.getValue()) + " " + partida.controlPalos(partida.getSuit()));
185 186 187
            }
        }else{
            System.out.println("Jugada invalidas: Se encontraron cartas iguales, por favor intente de nuevo");
188
        }
Yovan Martinez committed
189 190
    }
}