public List <Celda> PosiblesDestinos(Tablero tablero, Celda celdaActual, int incrementoVertical, int incrementoHorizontal) { List <Celda> cDisp = new List <Celda>(); bool piezaOFinalTableroEncontrado = false; int horizontal = incrementoHorizontal; int vertical = incrementoVertical; Celda celdaDestino = null; while (!piezaOFinalTableroEncontrado) { Movimiento movimiento = new Movimiento(); movimiento.Horizontal = horizontal; movimiento.Vertical = vertical; celdaDestino = tablero.getCelda(celdaActual, movimiento); if (tablero.VerificarCeldaDisponible(celdaDestino, color)) { cDisp.Add(celdaDestino); celdasDisponibles.Add(celdaDestino); } piezaOFinalTableroEncontrado = (celdaDestino == null || celdaDestino.Pieza != null); horizontal += incrementoHorizontal; vertical += incrementoVertical; } //Verifica solo las celdas disponibles que apuntan al Rey contrario if (celdaDestino.Pieza != null && celdaDestino.Pieza is Rey && celdaDestino.Pieza.Color != this.color) { celdasDispJaqueRey = cDisp; } return(cDisp); }
public List <Celda> PosiblesDestinos(Tablero tablero, Celda celdaActual, List <Movimiento> movimientos) { List <Celda> cDisp = new List <Celda>(); foreach (Movimiento movimiento in movimientos) { Celda celdaDestino = tablero.getCelda(celdaActual, movimiento); if (tablero.VerificarCeldaDisponible(celdaDestino, color)) { cDisp.Add(celdaDestino); celdasDisponibles.Add(celdaDestino); } //Verifica solo las celdas disponibles que apuntan al Rey contrario if (celdaDestino.Pieza != null && celdaDestino.Pieza is Rey && celdaDestino.Pieza.Color != this.color) { celdasDispJaqueRey.Add(celdaDestino); } } return(cDisp); }