Пример #1
0
        public void CalcularMovs(Coordenada PosicionInicio, Tablero Tablero, int Orientacion, int Lado)
        {
            if (PosicionInicio.Y + 1 <= Tablero.Ancho - 1 && PosicionInicio.X + Orientacion <= Tablero.Alto && !Final)
            {
                Coordenada Movimiento = new Coordenada(PosicionInicio.X + Orientacion, PosicionInicio.Y + Lado);

                if (Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != Icono && Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != '·')
                {
                    if (Tablero.Grilla[Movimiento.X + Orientacion, Movimiento.Y + Lado].Icono == '·')
                    {
                        Coordenada Destino = new Coordenada(Movimiento.X + Orientacion, Movimiento.Y + Lado);
                        Capturadas.Add(Tablero.Grilla[Movimiento.X, Movimiento.Y]);
                        Destino.PiezasComidas = Capturadas;
                        PosiblesMovimientos.Add(Destino);
                        Capturo = true;
                        CalcularMovs(Destino, Tablero, Orientacion, Lado);
                    }
                }
            }
        }
Пример #2
0
        public override List <Coordenada> CalcularMovimientos(Coordenada PosicionInicio, Tablero Tablero)
        {
            for (int i = 1; i < Tablero.Alto; i++)
            {
                //Abajo Derecha
                try
                {
                    if (Tablero.Grilla[PosicionInicial.X + i, PosicionInicial.Y + i].Icono == '·')
                    {
                        Coordenada Movimiento = new Coordenada(PosicionInicial.X + i, PosicionInicial.Y + i);
                        PosiblesMovimientos.Add(Movimiento);
                    }
                    else if (Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y + i].Icono != '·' && Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y + i].Icono == Icono)
                    {
                        break;
                    }
                    else if (Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y + i].Icono != '·' && Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y + i].Icono != Icono)
                    {
                        Coordenada Inicio = new Coordenada(PosicionInicio.X + i - 1, PosicionInicio.Y + i - 1);
                        CalcularMovs(Inicio, Tablero, 1, 1);
                        break;
                    }
                }
                catch (IndexOutOfRangeException) { }

                // Abajo Izquierda
                try
                {
                    if (Tablero.Grilla[PosicionInicial.X + i, PosicionInicial.Y - i].Icono == '·')
                    {
                        Coordenada Movimiento = new Coordenada(PosicionInicial.X + i, PosicionInicial.Y - i);
                        PosiblesMovimientos.Add(Movimiento);
                    }
                    else if (Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y - i].Icono != '·' && Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y - i].Icono == Icono)
                    {
                        break;
                    }
                    else if (Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y - i].Icono != '·' && Tablero.Grilla[PosicionInicio.X + i, PosicionInicio.Y - i].Icono != Icono)
                    {
                        Coordenada Inicio = new Coordenada(PosicionInicio.X + i - 1, PosicionInicio.Y - i + 1);
                        CalcularMovs(Inicio, Tablero, 1, -1);
                        break;
                    }
                }
                catch (IndexOutOfRangeException) { }

                // Arriba Derecha
                try
                {
                    if (Tablero.Grilla[PosicionInicial.X - i, PosicionInicial.Y + i].Icono == '·')
                    {
                        Coordenada Movimiento = new Coordenada(PosicionInicial.X - i, PosicionInicial.Y + i);
                        PosiblesMovimientos.Add(Movimiento);
                    }
                    else if (Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y + i].Icono != '·' && Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y + i].Icono == Icono)
                    {
                        break;
                    }
                    else if (Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y + i].Icono != '·' && Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y + i].Icono != Icono)
                    {
                        Coordenada Inicio = new Coordenada(PosicionInicio.X - i + 1, PosicionInicio.Y + i - 1);
                        CalcularMovs(Inicio, Tablero, -1, 1);
                        break;
                    }
                }
                catch (IndexOutOfRangeException) { }


                // Arriba Izquierda
                try
                {
                    if (Tablero.Grilla[PosicionInicial.X - i, PosicionInicial.Y - i].Icono == '·')
                    {
                        Coordenada Movimiento = new Coordenada(PosicionInicial.X - i, PosicionInicial.Y - i);
                        PosiblesMovimientos.Add(Movimiento);
                    }
                    else if (Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y - i].Icono != '·' && Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y - i].Icono == Icono)
                    {
                        break;
                    }
                    else if (Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y - i].Icono != '·' && Tablero.Grilla[PosicionInicio.X - i, PosicionInicio.Y - i].Icono != Icono)
                    {
                        Coordenada Inicio = new Coordenada(PosicionInicio.X - i + 1, PosicionInicio.Y - i + 1);
                        CalcularMovs(Inicio, Tablero, -1, -1);
                        break;
                    }
                }
                catch (IndexOutOfRangeException) { }
            }
            return(PosiblesMovimientos);
        }
Пример #3
0
        public override List <Coordenada> CalcularMovimientos(Coordenada PosicionInicio, Tablero Tablero)
        {
            if (Icono == 'O')
            {
                Orientacion = -1;
            }
            else if (Icono == 'X')
            {
                Orientacion = 1;
            }

            //------------------------------------------------------------------------------------------------------------------------------------------------
            //LADO DERECHO

            if (PosicionInicio.Y + 1 <= Tablero.Ancho - 1 && PosicionInicio.X + Orientacion <= Tablero.Alto && !Final)
            {
                Coordenada Movimiento = new Coordenada(PosicionInicio.X + Orientacion, PosicionInicio.Y + 1);

                if (Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono == '·' && !Capturo)
                {
                    PosiblesMovimientos.Add(Movimiento);
                }
                else if (Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != Icono && Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != '·')
                {
                    if (Tablero.Grilla[Movimiento.X + Orientacion, Movimiento.Y + 1].Icono == '·')
                    {
                        Coordenada Destino = new Coordenada(Movimiento.X + Orientacion, Movimiento.Y + 1);
                        Capturadas.Add(Tablero.Grilla[Movimiento.X, Movimiento.Y]);
                        Destino.PiezasComidas = Capturadas;
                        PosiblesMovimientos.Add(Destino);
                        Capturo = true;
                        CalcularMovimientos(Destino, Tablero);
                    }
                }
            }

            //------------------------------------------------------------------------------------------------------------------------------------------------

            //------------------------------------------------------------------------------------------------------------------------------------------------
            //LADO IZQUIERDO

            if (PosicionInicio.Y - 1 >= 0 && PosicionInicio.X + Orientacion >= 0 && !Final)
            {
                Coordenada Movimiento = new Coordenada(PosicionInicio.X + Orientacion, PosicionInicio.Y - 1);

                if (Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono == '·' && !Capturo)
                {
                    PosiblesMovimientos.Add(Movimiento);
                }
                else if (Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != Icono && Tablero.Grilla[Movimiento.X, Movimiento.Y].Icono != '·')
                {
                    if (Tablero.Grilla[Movimiento.X + Orientacion, Movimiento.Y - 1].Icono == '·')
                    {
                        Coordenada Destino = new Coordenada(Movimiento.X + Orientacion, Movimiento.Y - 1);
                        Capturadas.Add(Tablero.Grilla[Movimiento.X, Movimiento.Y]);
                        Destino.PiezasComidas = Capturadas;
                        PosiblesMovimientos.Add(Destino);
                        Capturo = true;
                        CalcularMovimientos(Destino, Tablero);
                    }
                }
            }
            Final = true;
            return(PosiblesMovimientos);
        }