public override List <Celda> getCeldasDestino(Tablero tablero, Celda celdaActual) { Celda celda = this.VerificarSiPuedeEnrocar(tablero); if (celda != null) { celdasDisponibles.Add(celda); } else { celdasDisponibles.AddRange(base.PosiblesDestinos(tablero, celdaActual, 0, -1)); celdasDisponibles.AddRange(base.PosiblesDestinos(tablero, celdaActual, 0, 1)); celdasDisponibles.AddRange(base.PosiblesDestinos(tablero, celdaActual, 1, 0)); celdasDisponibles.AddRange(base.PosiblesDestinos(tablero, celdaActual, -1, 0)); } return(celdasDisponibles); }
public void Mover(Pieza pieza, Tablero tablero, Celda celdaActual, Celda celdaDestino) { Pieza existePieza = (from Pieza p in piezas where p == pieza select p).FirstOrDefault(); if (existePieza != null) { piezaJaque = null; if (pieza.Mover(tablero, celdaActual, celdaDestino, this)) { bool caballoElegido = false; bool alfilElegido = false; bool torreElegida = false; bool damaElegida = false; //Saco los peones y el rey como piezas coronadoras foreach (Pieza piezaCorona in piezas) { if (piezaCorona is Caballo && !caballoElegido) { caballoElegido = true; piezasCoronacion.Add(piezaCorona); } if (piezaCorona is Alfil && !alfilElegido) { alfilElegido = true; piezasCoronacion.Add(piezaCorona); } if (piezaCorona is Torre && !torreElegida) { torreElegida = true; piezasCoronacion.Add(piezaCorona); } if (piezaCorona is Reina && !damaElegida) { damaElegida = true; piezasCoronacion.Add(piezaCorona); } } } } }
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); }
public override List <Celda> getCeldasDestino(Tablero tablero, Celda celdaActual) { return(base.PosiblesDestinos(tablero, celdaActual, movimientos)); }
public bool Mover(Tablero tablero, Celda celdaActual, Celda celdaDestino, Jugador jugador) { return(tablero.ModificarPosicionPieza(celdaActual, celdaDestino, jugador)); }
public abstract List <Celda> getCeldasDestino(Tablero tablero, Celda celdaActual);
public override List <Celda> getCeldasDestino(Tablero tablero, Celda celdaActual) { Movimiento movimiento = new Movimiento(); movimiento.Horizontal = 0; movimiento.Vertical = -2; bool startPosition = false; if (tablero.getCelda(celdaActual, movimiento) == null) { startPosition = true; } movimiento.Horizontal = 0; movimiento.Vertical = 1; Celda celdaDestino = tablero.getCelda(celdaActual, movimiento); if (celdaDestino != null && celdaDestino.Pieza == null) { celdasDisponibles.Add(celdaDestino); if (startPosition) { movimiento.Horizontal = 0; movimiento.Vertical = 2; celdaDestino = tablero.getCelda(celdaActual, movimiento); if (celdaDestino != null && celdaDestino.Pieza == null) { celdasDisponibles.Add(celdaDestino); } } } movimiento.Horizontal = -1; movimiento.Vertical = 1; celdaDestino = tablero.getCelda(celdaActual, movimiento); if (celdaDestino != null && celdaDestino.Pieza != null && celdaDestino.Pieza.Color != color) { celdasDisponibles.Add(celdaDestino); } Celda celdaHayPeonContrario = null; //Peon al paso if ((this.PosicionInicial.Equals("ARRIBA") && celdaActual.Fila == 4) || (this.PosicionInicial.Equals("ABAJO") && celdaActual.Fila == 5)) { movimiento.Horizontal = -1; movimiento.Vertical = 0; celdaHayPeonContrario = tablero.getCelda(celdaActual, movimiento); } if (celdaHayPeonContrario != null && celdaHayPeonContrario.Pieza != null && celdaHayPeonContrario.Pieza is Peon && celdaHayPeonContrario.Pieza.Color != this.color) { celdasDisponibles.Add(celdaDestino); } movimiento.Horizontal = 1; movimiento.Vertical = 1; celdaDestino = tablero.getCelda(celdaActual, movimiento); if (celdaDestino != null && celdaDestino.Pieza != null && celdaDestino.Pieza.Color != color) { celdasDisponibles.Add(celdaDestino); } if ((this.PosicionInicial.Equals("ARRIBA") && celdaActual.Fila == 4) || (this.PosicionInicial.Equals("ABAJO") && celdaActual.Fila == 5)) { movimiento.Horizontal = 1; movimiento.Vertical = 0; celdaHayPeonContrario = tablero.getCelda(celdaActual, movimiento); } if (celdaHayPeonContrario != null && celdaHayPeonContrario.Pieza != null && celdaHayPeonContrario.Pieza is Peon && celdaHayPeonContrario.Pieza.Color != this.color) { celdasDisponibles.Add(celdaDestino); } return(celdasDisponibles); }
public void AceptarTablas(Tablero tablero) { tablero.FinalizarPorTablas(); }
public void SeleccionarPiezaCorona(Tablero tablero, Pieza pieza, Celda destino) { tablero.IntercambiarPieza(pieza, destino, this); }