Example #1
0
        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);
        }
Example #2
0
        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);
        }