public bool Mover(Tablero tablero, Celda celdaActual, Celda celdaDestino, Jugador jugador) { return(tablero.ModificarPosicionPieza(celdaActual, celdaDestino, jugador)); }
public bool ModificarPosicionPieza(Celda actual, Celda destino, Jugador jug) { bool coronacion = false; Pieza pieza = actual.Pieza; actual.Pieza = null; Jugador jugadorRival = null; Pieza piezaComida = null; if (destino.Pieza != null) { if (jug.Equals(partida.Jugador1)) { piezaComida = (from Pieza p in partida.Jugador2.Piezas where p.Equals(destino.Pieza) select p).FirstOrDefault(); jugadorRival = partida.Jugador2; } else { piezaComida = (from Pieza p in partida.Jugador1.Piezas where p.Equals(destino.Pieza) select p).FirstOrDefault(); jugadorRival = partida.Jugador1; } piezaComida.Activa = false; piezaComida = (from Pieza p in piezas where p.Equals(piezaComida) select p).FirstOrDefault(); piezaComida.Activa = false; } //Verifica si el peon comio con el peon al paso if (pieza is Peon) { Movimiento mov = new Movimiento(); mov.Horizontal = 0; mov.Vertical = -1; Celda celdaAnterior = this.getCelda(actual, mov); if (celdaAnterior.Pieza != null && celdaAnterior.Pieza is Peon && celdaAnterior.Pieza.Color != pieza.Color) { piezaComida = (from Pieza p in piezas where p.Equals(celdaAnterior.Pieza) select p).FirstOrDefault(); piezaComida.Activa = false; } coronacion = this.VerificarCoronacion((Peon)pieza, destino); } destino.Pieza = pieza; partida.RegistrarMovimiento(actual, destino); this.VerificarMovimiento(actual, destino, pieza, jug); string tipo = (!coronacion) ? this.verificarJaqueOJaqueMate(jug, pieza) : string.Empty; if (tipo.Equals("JAQUE")) { jugadorRival.PiezaJaque = pieza; } partida.ChequearGanador(tipo, jug); return(coronacion); }