/** * Metodo auxiliar para pasar una string (eg K4s o Kh5h) a coordenadas * * @param mano * @return */ private int[] parseManoACoordenadas(String mano) { int x = 0, y = 0, iz, dr; if (mano.length() == 2) { // pareja x = Utilidades.char2int(mano.charAt(0)); y = Utilidades.char2int(mano.charAt(1)); } else if (mano.length() == 3) { if (mano.charAt(2) == 's') { // suited iz = Utilidades.char2int(mano.charAt(0)); dr = Utilidades.char2int(mano.charAt(1)); if (iz >= dr) { x = iz; y = dr; } else { x = dr; y = iz; } } else { // offsuited iz = Utilidades.char2int(mano.charAt(0)); dr = Utilidades.char2int(mano.charAt(1)); if (iz >= dr) { y = iz; x = dr; } else { y = dr; x = iz; } } } else if (mano.length() == 4) { if (mano.charAt(1) == mano.charAt(3)) { // suited iz = Utilidades.char2int(mano.charAt(0)); dr = Utilidades.char2int(mano.charAt(2)); if (iz >= dr) { x = iz; y = dr; } else { x = dr; y = iz; } } else { // offsuited iz = Utilidades.char2int(mano.charAt(0)); dr = Utilidades.char2int(mano.charAt(2)); if (iz >= dr) { y = iz; x = dr; } else { y = dr; x = iz; } } } else { // excepcion } return new int[] {x, y}; }
/** * Getter para ver si la mano pertenece al rango, usando coordenadas * * @param x * @param y * @return */ public boolean getManoEnRango(int x, int y) { if (Utilidades.sonCoordValidas(x, y)) { return this.rango[x][y]; } else { throw new EIndiceInvalido(); } }
public void marcarPolarizado(int w, int x, int y, int z, Ranking ranking) { // Poner todos a false for (int i = 0; i < Constantes.TABLA_RANGOS_X; i++) for (int j = 0; j < Constantes.TABLA_RANGOS_X; j++) this.rango[i][j] = false; float numManos = 0; float numManosW = (w * 1326) / 100; float numManosX = (x * 1326) / 100; float numManosY = (y * 1326) / 100; float numManosZ = (z * 1326) / 100; String mano; int fil, col; for (int cont = 0; cont < Constantes.TABLA_RANGOS_X * Constantes.TABLA_RANGOS_X; cont++) { mano = ranking.at(cont); if (mano.length() == 2) { // pareja numManos += 6; fil = Utilidades.char2int(mano.charAt(0)); col = fil; } else { // length == 3 if (mano.charAt(mano.length() - 1) == 's') { // suited numManos += 4; fil = Utilidades.char2int(mano.charAt(0)); col = Utilidades.char2int(mano.charAt(1)); } else { // offsuited numManos += 12; col = Utilidades.char2int(mano.charAt(0)); fil = Utilidades.char2int(mano.charAt(1)); } } if ((numManos > numManosW && numManos < numManosX) || (numManos > numManosY && numManos <= numManosZ)) { // entra dentro del rango this.rango[fil][col] = true; } } }
/** * Marca el rango segun un porcentaje determinado por E_Rankings * * @param porcentaje el porcentaje de manos que se quieren marcar * @param ranking el ranking a usar */ public void marcarPorcentaje(float porcentaje, Ranking ranking) { // Poner todos a false for (int i = 0; i < Constantes.TABLA_RANGOS_X; i++) for (int j = 0; j < Constantes.TABLA_RANGOS_X; j++) this.rango[i][j] = false; // Por la forma en la que funcionan los float, no pilla bien el 100% if (porcentaje >= 100.0) { porcentaje = 101; } float numManosPorMarcar = (porcentaje * 1326) / 100; // manos preflop que cubre el porcentaje String mano; int fil, col; for (int cont = 0; (cont < Constantes.TABLA_RANGOS_X * Constantes.TABLA_RANGOS_X) && numManosPorMarcar >= 0; cont++) { mano = ranking.at(cont); if (mano.length() == 2) { // pareja numManosPorMarcar -= 6; fil = Utilidades.char2int(mano.charAt(0)); col = fil; } else { // length == 3 if (mano.charAt(mano.length() - 1) == 's') { // suited numManosPorMarcar -= 4; fil = Utilidades.char2int(mano.charAt(0)); col = Utilidades.char2int(mano.charAt(1)); } else { // offsuited numManosPorMarcar -= 12; col = Utilidades.char2int(mano.charAt(0)); fil = Utilidades.char2int(mano.charAt(1)); } } if (numManosPorMarcar >= 0) // entra dentro del rango this.rango[fil][col] = true; } }
// Para la diagonal. private String devolverCartasSeleccionadasDiagonal(int posInicial, int posFinal) { String filaInt, columnaInt, cadenaResultado; StringBuilder resultado = new StringBuilder(); boolean primerasCartasIguales = false; int contador = posInicial, cartasIguales = 0; // Comprobamos si puede haber rango ++. if (this.rango[contador][contador] && this.rango[contador - 1][contador - 1]) { primerasCartasIguales = true; contador = contador - 2; } while (contador >= posFinal) { if (primerasCartasIguales) { // Son iguales las dos primeras cartas, puede haber ++. if (!this.rango[contador][contador] || (contador == 0)) { if (!this.rango[contador][contador]) { filaInt = Utilidades.int2String(contador + 1); columnaInt = Utilidades.int2String(contador + 1); resultado.append(columnaInt).append(filaInt).append("+").append(","); } else if (contador == 0) { filaInt = Utilidades.int2String(contador); columnaInt = Utilidades.int2String(contador); resultado.append(columnaInt).append(filaInt).append("+").append(","); } primerasCartasIguales = false; } } else { // Ya no hay cartas más más. if (this.rango[contador][contador]) { if (cartasIguales == 0) { filaInt = Utilidades.int2String(contador); columnaInt = Utilidades.int2String(contador); resultado.append(columnaInt).append(filaInt); if (contador == 0) { resultado.append(","); } } cartasIguales++; if ((contador == 0) && (cartasIguales > 1)) { filaInt = Utilidades.int2String(contador); columnaInt = Utilidades.int2String(contador); resultado.append("-").append(columnaInt).append(filaInt).append(","); cartasIguales = 0; } } else { if (cartasIguales > 1) { filaInt = Utilidades.int2String(contador + 1); columnaInt = Utilidades.int2String(contador + 1); resultado.append("-").append(columnaInt).append(filaInt).append(","); cartasIguales = 0; } else if (cartasIguales != 0 && contador != 0) { resultado.append(","); cartasIguales = 0; } } } contador--; } cadenaResultado = resultado.toString(); return cadenaResultado; }