diff --git a/Poker.java b/Poker.java index 55cacf9..686d161 100644 --- a/Poker.java +++ b/Poker.java @@ -19,6 +19,7 @@ public class Poker { public String getValue(){ return values; } + //Metodo para cargar los valores y los palos public void setValues(String carta){ values = ordenarCadena(values + String.valueOf(carta.charAt(0))); @@ -34,7 +35,8 @@ public class Poker { return cadenaOrdenada; } //***********CONTROLA LA JUGADA QUE SE DA EN LOS PALOS - public String controlPalos(String palos){ + public String controlPalos(){ + String palos = suit; int contador = formulaYovan(palos); if (contador == 25) { return "COLOR"; @@ -44,7 +46,8 @@ public class Poker { } } //***********CONTROLA QUE JUGADA SE DA EN LOS VALORES - public String controlValor(String valores){ + public String controlValor(){ + String valores = values; int contador = formulaYovan(valores); int secuencial = 0; boolean thereIsLetter = false; @@ -87,23 +90,9 @@ public class Poker { } //Para mejor manejo si no cumple ninguna de las condiciones envia una cadena vacia return ""; -} - // 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 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"; } //Con este metodo controlo de que manera se repite el string que recibe el metodo(Formula de yorhan ;D ) - public int formulaYovan(String cadena){ + private int formulaYovan(String cadena){ int contador = 0; for (int i = 0; i < cadena.length(); i++) { for (int j = 0; j < cadena.length(); j++) { @@ -117,7 +106,7 @@ public class Poker { //Con este metodo le doy valor numerico a la cadena valor public int valorCadenaNumerico(String strValue){ int valorNumerico = 0; - switch (controlValor(values)) { + switch (controlValor()) { case "89JQT": valorNumerico = 50; break; case "9JKQT":valorNumerico = 55; @@ -131,82 +120,121 @@ public class Poker { case "6789T":valorNumerico = 40; break; default: - for (int i = 0; i < array.length; i++) {valorNumerico = Character.valueOf(strValue.charAt(i));} + for (int i = 0; i < strValue.length(); i++) {valorNumerico = Character.valueOf(strValue.charAt(i));} break; } return valorNumerico; } + public int valorJugadas(){ + int puntaje = 0; + switch (controlValor()) { + case "POKER": puntaje = 17; + break; + case "FULL": puntaje = 13; + break; + case "TRIO": puntaje = 11; + break; + case "PAR DOBLE": puntaje = 9; + break; + case "PAR": puntaje = 7; + break; + case "": puntaje = 1; + break; + default: + break; + } + return puntaje; + } + //Metodo para generar cartas aleatorias + public void repartirCartas(Carta carta){ + String [] valores = {"A","2","3","4","5","6","7","8","9","T","J","Q","K",}; + String [] palos = {"D","S","C","H",}; + carta.valor = (valores[(int)Math.floor(Math.random()*(11-0+1)+0)]); + carta.palo = (palos[(int)Math.floor(Math.random()*(3-0+1)+0)]); + } + //Metodo para imprimir resultados de cada jugador + public void imprimirResultados(Carta [] mano, int jugador){ + if ((controlValor() == "") && (controlPalos() == "" )) { + System.out.print("jugador " + jugador + " : \n"); + System.out.print("Sus cartas son: ["); + for (int i = 0; i < mano.length; i++) { + System.out.print(mano[i].valorPalo() + ","); + } + System.out.print("]\n"); + System.out.println("jugada: CARTA ALTA"); + }else{ + System.out.print("jugador " + jugador + " : \n"); + System.out.print("Sus cartas son: ["); + for (int i = 0; i < mano.length; i++) { + System.out.print(mano[i].valorPalo() + ","); + } + System.out.print("]\n"); + System.out.println("Jugada: " + controlValor() + " " + controlPalos()); + } + } public static void main(String[] args) { - - 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"); - Poker partida = new Poker(); - String [] valores = {"A","2","3","4","5","6","7","8","9","T","J","Q","K",}; - String [] palos = {"D","S","C","H",}; + Carta carta1 = new Carta("BB"); + Carta carta2 = new Carta("BB"); + Carta carta3 = new Carta("BB"); + Carta carta4 = new Carta("BB"); + Carta carta5 = new Carta("BB"); + Carta carta6 = new Carta("BB"); + Carta carta7 = new Carta("BB"); + Carta carta8 = new Carta("BB"); + Carta carta9 = new Carta("BB"); + Carta carta10 = new Carta("BB"); + Poker jugador1 = new Poker(); + Poker jugador2 = new Poker(); 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,}; - - - - while (control > 10) { + while (control != 10) { + control = 0; 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)]); + //Se generan valores aleatorios para la primera mano + jugador1.repartirCartas(mano[i]); + //Se generan valores aleatorios para la segunda mano + jugador2.repartirCartas(mano2[i]); } for (int i = 0; i < mano.length; i++) { for (int j = 0; j < mano.length; j++) { - if (mano[i].valorPalo().equals(mano[j].valorPalo())) { + 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())) { + if ((mano2[i].valorPalo()).equals(mano2[j].valorPalo())) { control++; } - } + if ((mano[i].valorPalo()).equals(mano2[j].valorPalo())) { + control++; + } + } } } - control = 0; //Le paso los valores con el metodo del profe for (int i = 0; i < mano.length; i++) { - partida.setValues(mano[i].valorPalo()); + jugador1.setValues(mano[i].valorPalo()); + jugador2.setValues(mano2[i].valorPalo()); } - //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"); + jugador1.imprimirResultados(mano,1); + jugador2.imprimirResultados(mano2,2); + //Decide el jugador con ayuda de metodos(Profe si sabes otra manera de decidir esto decime pls) + if ((jugador1.controlValor() == jugador2.controlValor()) && (jugador1.controlPalos() == jugador2.controlPalos())) { + if (jugador1.valorCadenaNumerico(jugador1.getValue())>jugador2.valorCadenaNumerico(jugador1.getValue())) { + System.out.println("Gana el jugador 1"); }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"); - System.out.println("Jugada: " + partida.controlValor(partida.getValue()) + " " + partida.controlPalos(partida.getSuit())); + System.out.println("Gana el jugador 2"); } }else{ - System.out.println("Jugada invalidas: Se encontraron cartas iguales, por favor intente de nuevo"); + if (jugador1.valorJugadas() >jugador2.valorJugadas()) { + System.out.println("Gana el jugador 1"); + }else{ + System.out.println("Gana el jugador 2"); + } } + } }