Ejemplo n.º 1
0
 public bool Mover(Tablero tablero, Celda celdaActual, Celda celdaDestino, Jugador jugador)
 {
     return(tablero.ModificarPosicionPieza(celdaActual, celdaDestino, jugador));
 }
Ejemplo n.º 2
0
        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);
        }