/** * 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; } } }