import javax.lang.model.element.Element; import javax.print.DocFlavor.STRING; import java.util.Arrays; public class Carta { public String valor; public String palo; public String suit = ""; public String values = ""; public Carta(){ valor = ""; palo = ""; } //Constructor que puso el profe con intenciones que desconozco public Carta(String completo) { this.valor = valor + ordenarCadena(String.valueOf(completo.charAt(0))); this.palo = palo + ordenarCadena(String.valueOf(completo.charAt(1))); } //Guarda todos los valores de palo de las cartas en un solo string para guardarlos public void armarPalos(String carta){ suit = ordenarCadena(suit + ordenarCadena(String.valueOf(carta.charAt(1)))); } //Guarda todos los valores de las cartas en un solo string para trabajarlos public void armarValores(String valores){ values = ordenarCadena(values + String.valueOf(valores.charAt(0))); } public String getSuit(){ return suit; } public String getValue(){ return values; } //Segunda cosa que puso el profe con intenciones desconocidas para la mente promedio String valorPalo() { return this.valor + this.palo; } //*************CONTROLA QUE JUGADA SE DA EN LOS PALOS public int 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++; } } } return contador; } //***********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++; } } } 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"; } //Valora la mano y devuelve un resultado final (depende en su totalidad de otros metodos) public String valoracionMano(){ if (controlPalos(getSuit()) == 25 && controlValor(getValue()).equals("ESCALERA")){ return "ESCALERA COLOR"; }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"; } return "NADA"; } //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; } public static void main(String[] args) { 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]); } System.out.println(cartas.valoracionMano()); } }