Пример #1
0
  // calcula la posicion correcta de cada carta en el array de marcaje
  static int posCorrecta(Carta c) {

    int valor = c.getValor();
    if (valor == 11) {
      return cartas_por_palo - 3;
    } else if (valor == 12) {
      return cartas_por_palo - 2;
    } else if (valor == 13) {
      return cartas_por_palo - 1;
    } else {
      return c.getValor() - 1;
    }
  }
Пример #2
0
 private boolean asEnLaMano() {
   for (Carta carta : jugada) {
     if (carta.getValor() == 1) {
       return true;
     }
   }
   return false;
 }
Пример #3
0
  static boolean esCompletable(boolean[][] marcados, Carta carta) {

    // Si se juega una carta a el mazoDestino, y sabemos de antemano que
    // todos los correlativos de la carta jugada ya estan en mazoDestino

    boolean OK = false;

    int valorLimite = carta.getValor();
    if (valorLimite == 1) {
      if (marcados[Carta.ESPADAS][posCorrecta(carta) + 1]
          && marcados[Carta.CORAZONES][posCorrecta(carta) + 1]
          && marcados[Carta.DIAMANTES][posCorrecta(carta) + 1]
          && marcados[Carta.TREBOLES][posCorrecta(carta) + 1]) {
        OK = false;
      } else {
        OK = true;
      }

    } else if (valorLimite == 13) {

      if (marcados[Carta.ESPADAS][posCorrecta(carta) - 1]
          && marcados[Carta.CORAZONES][posCorrecta(carta) - 1]
          && marcados[Carta.DIAMANTES][posCorrecta(carta) - 1]
          && marcados[Carta.TREBOLES][posCorrecta(carta) - 1]) {
        OK = false;
      } else {
        OK = true;
      }

    } else {

      if (marcados[Carta.ESPADAS][posCorrecta(carta) - 1]
          && marcados[Carta.ESPADAS][posCorrecta(carta) + 1]
          && marcados[Carta.CORAZONES][posCorrecta(carta) - 1]
          && marcados[Carta.CORAZONES][posCorrecta(carta) + 1]
          && marcados[Carta.DIAMANTES][posCorrecta(carta) - 1]
          && marcados[Carta.DIAMANTES][posCorrecta(carta) + 1]
          && marcados[Carta.TREBOLES][posCorrecta(carta) - 1]
          && marcados[Carta.TREBOLES][posCorrecta(carta) + 1]) {
        OK = false;
      } else {
        OK = true;
      }
    }

    return OK;
  }
Пример #4
0
  public int obtenerTotal() {
    int acum = 0, puntos = 0;
    for (Carta carta : jugada) {
      if (carta.getValor() >= 10) {
        puntos = 10;
        acum += puntos;
      } else if (carta.getValor() == 1) {
        puntos = 11;
        acum += puntos;
        if (acum > 21) {
          puntos = 1;
          acum += puntos - 11;
        }
      } else {
        puntos = carta.getValor();
        acum += puntos;
      }
    }

    if (acum > 21 && asEnLaMano()) {
      acum = 0;
      puntos = 0;
      for (Carta carta : jugada) {
        if (carta.getValor() >= 10) {
          puntos = 10;
          acum += puntos;
        } else if (carta.getValor() == 1) {
          puntos = 1;
          acum += puntos;
        } else {
          puntos = carta.getValor();
          acum += puntos;
        }
      }
    }

    return acum;
  }