コード例 #1
0
  /**
   * Este método está encargado de buscar movimientos válidos (que flanquean fichas contrarias) en
   * un tablero y turno determinados. Hace un recorrido del tablero, casilla por casilla, buscando
   * la posibilidad de realizar "un reversi" desde cada una de ellas. Actualiza el flag
   * "hayMovimientosValidos" y guarda dichos movimientos (si existen) en el array
   * "movimientosValidos" del tablero.
   */
  private void buscaMovimientosValidos(Ficha turno, Tablero tab) {

    hayMovimientosValidos = false;
    MovimientoReversi mov;

    // Se vacia el array de movimientos validos del
    // tablero,
    // ya que pertenecen al turno anterior:
    tab.vaciaMovimientosValidos();

    for (int i = 1; i <= tab.getAncho(); i++)
      for (int j = 1; j <= tab.getAlto(); j++) {

        // Se crea un movimiento con las coordenadas del tablero
        // en las que nos encontramos:
        mov = new MovimientoReversi(i, j, turno);

        // Se comprueba si "hay reversi" desde esa posicion:
        if (tab.getCasilla(i, j) == Ficha.VACIA && mov.buscaReversi(tab)) {

          // Se añade este movimiento (por ser válido) al array de
          // movimientos validos del tablero:
          tab.addMovimientoValido(mov);

          hayMovimientosValidos = true;
        }
      }
  }