예제 #1
0
 /**
  * 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};
 }
예제 #2
0
 /**
  * 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();
   }
 }
예제 #3
0
  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;
      }
    }
  }
예제 #4
0
  /**
   * 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;
    }
  }
예제 #5
0
  // 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;
  }