예제 #1
0
        public Figura BuscarFigura(int x, int y)
        {
            Figura resul = null;
            int    cont  = 0;
            bool   flag  = false;

            while (ListaFiguras != null && flag == false)
            {
                Figura      fig = ListaFiguras[cont];
                Ubicacion[] ubi = fig.GetLista();
                for (int i = 0; i < ubi.Length; i++)
                {
                    int ubiX = ubi[i].GetX();
                    int ubiY = ubi[i].GetY();
                    if (ubiX == x && ubiY == y)
                    {
                        resul = fig;
                        flag  = true;
                        break;
                    }
                }
                cont++;
            }
            return(resul);
        }
예제 #2
0
        public bool VerificarOperacion(int[,] tablero, int num, int coordenadaX, int coordenadaY)
        {
            Figura fig       = BuscarFigura(coordenadaX, coordenadaY);
            int    operacion = fig.GetOperacion();
            int    acumulado = fig.GetAcumulado();
            int    meta      = fig.GetNumMeta();

            if (operacion == 1)
            {
                if (fig.GetTipo() != "solo")
                {
                    int totalSuma = acumulado + num;
                    if ((totalSuma <= meta) && (fig.GetOcupado() < 3))
                    {
                        return(true);
                    }

                    if ((totalSuma == meta) && (fig.GetOcupado() == 3))
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                int totalMul = acumulado * num;
                if ((totalMul <= meta) && (fig.GetOcupado() < 1))
                {
                    return(true);
                }

                if ((totalMul == meta) && (fig.GetOcupado() == 1))
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
예제 #3
0
        public bool VerificarFigura(int [,] tablero, int num, int coordenadaX, int coordenadaY)
        {
            Figura fig = BuscarFigura(coordenadaX, coordenadaY);

            Ubicacion[] listaPosiciones = fig.GetLista();       //busca posiciones de una figura en el tablero
            for (int i = 0; i < listaPosiciones.Length; i++)
            {
                Ubicacion ubi        = listaPosiciones[i];
                int       x          = ubi.GetX();
                int       y          = ubi.GetY();
                int       numTablero = tablero[x, y]; //busca numero en el tablero en una posicion
                if (num == numTablero)                //verifica si no se repiten numeros en la figura
                {
                    return(false);
                }
            }
            return(true);
        }
예제 #4
0
        public void SetListaFiguras(Figura fig)
        {
            int  cont    = 0;
            bool bandera = false;

            while (bandera != true)
            {
                if (ListaFiguras[cont] == null)
                {
                    ListaFiguras[cont] = fig;
                    bandera            = true;
                }
                else
                {
                    cont++;
                }
            }
        }
예제 #5
0
        public void ModificarFigura(int x, int y, int numero, int aumentarOquitar)      //1 = aumentar , 2 = quitar
        {
            int cont = 0;

            bool flag = false;

            while (ListaFiguras != null && flag == false)
            {
                Figura      fig = ListaFiguras[cont];
                Ubicacion[] ubi = fig.GetLista();
                for (int i = 0; i < ubi.Length; i++)
                {
                    int ubiX = ubi[i].GetX();
                    int ubiY = ubi[i].GetY();
                    if (ubiX == x && ubiY == y)
                    {
                        if ((ListaFiguras[cont].GetOperacion() == 1) && aumentarOquitar == 1)
                        {
                            ListaFiguras[cont].AumentarAcumuladoSum(numero);
                            ListaFiguras[cont].AumentarOcupado(1);
                        }
                        if ((ListaFiguras[cont].GetOperacion() == 1) && aumentarOquitar == 2)
                        {
                            ListaFiguras[cont].DisminuirAcumuladoSum(numero);
                            ListaFiguras[cont].DisminuirOcupado(1);
                        }
                        if ((ListaFiguras[cont].GetOperacion() == 2) && aumentarOquitar == 1)
                        {
                            ListaFiguras[cont].AumentarAcumuladoMul(numero);
                            ListaFiguras[cont].AumentarOcupado(1);
                        }
                        if ((ListaFiguras[cont].GetOperacion() == 2) && aumentarOquitar == 2)
                        {
                            ListaFiguras[cont].DisminuirAcumuladoMul(numero);
                            ListaFiguras[cont].DisminuirOcupado(1);
                        }
                        flag = true;

                        break;
                    }
                }
                cont++;
            }
        }
예제 #6
0
        public void ImprimirOperaciones()
        {
            int cont = 0;

            while (ListaFiguras[cont] != null)
            {
                Figura f         = ListaFiguras[cont];
                int    operacion = f.GetOperacion();
                string numMeta   = f.GetNumMeta().ToString();
                if (operacion == 1)
                {
                    Console.WriteLine(numMeta + "+" + " ; ");
                }
                else
                {
                    Console.WriteLine(numMeta + "x" + " ; ");
                }
                cont++;
            }
        }
예제 #7
0
        public void ImprimirFiguras()
        {
            int cont = 0;

            while (ListaFiguras[cont] != null)
            {
                Figura      f           = ListaFiguras[cont];
                string      tipoFigura  = f.GetTipo();
                Ubicacion[] ubicaciones = f.GetLista();
                Console.WriteLine("Figura:" + tipoFigura);
                int cont2 = 0;
                while (cont2 < ubicaciones.Length)
                {
                    Ubicacion ubi  = ubicaciones[cont2];
                    string    str1 = ubi.GetX().ToString();
                    string    str2 = ubi.GetY().ToString();
                    Console.WriteLine("Ubicaciones: " + "[" + str1 + "," + str2 + "]");
                    cont2++;
                }
                cont++;
            }
        }
예제 #8
0
        public bool ComprobarEspacio(int[,] matrizFiguras, string figura, int orientacion, int pivoteX, int pivoteY)    //pivote es par de donde empieza la figura
        {
            int ubi1 = 0;
            int ubi2 = 0;
            int ubi3 = 0;
            int ubi4 = 0;


            if (figura == "cuadrado")
            {
                if (pivoteY + 1 < N && pivoteX + 1 < N)       //Que no se salga de los limites
                {
                    ubi1 = matrizFiguras[pivoteX, pivoteY];
                    ubi2 = matrizFiguras[pivoteX, pivoteY + 1];
                    ubi3 = matrizFiguras[pivoteX + 1, pivoteY];
                    ubi4 = matrizFiguras[pivoteX + 1, pivoteY + 1];

                    if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                    {
                        FigurasArray[pivoteX, pivoteY]         = NumFigura;
                        FigurasArray[pivoteX, pivoteY + 1]     = NumFigura;
                        FigurasArray[pivoteX + 1, pivoteY]     = NumFigura;
                        FigurasArray[pivoteX + 1, pivoteY + 1] = NumFigura;

                        Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                        Ubicacion   u2   = new Ubicacion(pivoteX, pivoteY + 1);
                        Ubicacion   u3   = new Ubicacion(pivoteX + 1, pivoteY);
                        Ubicacion   u4   = new Ubicacion(pivoteX + 1, pivoteY + 1);
                        Ubicacion[] list = new Ubicacion[4];
                        list[0] = u1;
                        list[1] = u2;
                        list[2] = u3;
                        list[3] = u4;
                        int    nOper = GenerarNumeroOperacion(1);
                        Figura fig   = new Figura(list, "cuadrado", nOper, 1, 0, 0);

                        SetListaFiguras(fig);

                        NumFigura++;
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            }
            if (figura == "ele")
            {
                if (orientacion == 1 || orientacion == 2 || orientacion == 3 || orientacion == 4)
                {
                    if (orientacion == 1)
                    {
                        if (pivoteX + 2 < N && pivoteY + 1 < N)
                        {
                            ubi1 = matrizFiguras[pivoteX, pivoteY];
                            ubi2 = matrizFiguras[pivoteX + 1, pivoteY];
                            ubi3 = matrizFiguras[pivoteX + 2, pivoteY];
                            ubi4 = matrizFiguras[pivoteX + 2, pivoteY + 1];

                            if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                            {
                                FigurasArray[pivoteX, pivoteY]         = NumFigura;
                                FigurasArray[pivoteX + 1, pivoteY]     = NumFigura;
                                FigurasArray[pivoteX + 2, pivoteY]     = NumFigura;
                                FigurasArray[pivoteX + 2, pivoteY + 1] = NumFigura;

                                Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                                Ubicacion   u2   = new Ubicacion(pivoteX + 1, pivoteY);
                                Ubicacion   u3   = new Ubicacion(pivoteX + 2, pivoteY);
                                Ubicacion   u4   = new Ubicacion(pivoteX + 2, pivoteY + 1);
                                Ubicacion[] list = new Ubicacion[4];
                                list[0] = u1;
                                list[1] = u2;
                                list[2] = u3;
                                list[3] = u4;
                                int    nOper = GenerarNumeroOperacion(1);
                                Figura fig   = new Figura(list, "ele", nOper, 1, 0, 0);

                                SetListaFiguras(fig);

                                NumFigura++;
                                return(true);
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    if (orientacion == 2)
                    {
                        if (pivoteX + 2 < N && pivoteY - 1 > 0)
                        {
                            ubi1 = matrizFiguras[pivoteX, pivoteY];
                            ubi2 = matrizFiguras[pivoteX + 1, pivoteY];
                            ubi3 = matrizFiguras[pivoteX + 2, pivoteY];
                            ubi4 = matrizFiguras[pivoteX + 2, pivoteY - 1];

                            if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                            {
                                FigurasArray[pivoteX, pivoteY]         = NumFigura;
                                FigurasArray[pivoteX + 1, pivoteY]     = NumFigura;
                                FigurasArray[pivoteX + 2, pivoteY]     = NumFigura;
                                FigurasArray[pivoteX + 2, pivoteY - 1] = NumFigura;

                                Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                                Ubicacion   u2   = new Ubicacion(pivoteX + 1, pivoteY);
                                Ubicacion   u3   = new Ubicacion(pivoteX + 2, pivoteY);
                                Ubicacion   u4   = new Ubicacion(pivoteX + 2, pivoteY - 1);
                                Ubicacion[] list = new Ubicacion[4];
                                list[0] = u1;
                                list[1] = u2;
                                list[2] = u3;
                                list[3] = u4;
                                int    nOper = GenerarNumeroOperacion(1);
                                Figura fig   = new Figura(list, "ele", nOper, 1, 0, 0);

                                SetListaFiguras(fig);

                                NumFigura++;
                                return(true);
                            }
                            else
                            {
                                return(false);
                            }
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    if (orientacion == 3 || orientacion == 4)        //ver si en realidad mata dos pajaros de un tiro
                    {
                        if (pivoteX + 2 < N && pivoteY + 1 < N)
                        {
                            if (orientacion == 3)
                            {
                                ubi1 = matrizFiguras[pivoteX, pivoteY];
                                ubi2 = matrizFiguras[pivoteX, pivoteY + 1];
                                ubi3 = matrizFiguras[pivoteX + 1, pivoteY + 1];
                                ubi4 = matrizFiguras[pivoteX + 2, pivoteY + 1];

                                if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                                {
                                    FigurasArray[pivoteX, pivoteY]         = NumFigura;
                                    FigurasArray[pivoteX, pivoteY + 1]     = NumFigura;
                                    FigurasArray[pivoteX + 1, pivoteY + 1] = NumFigura;
                                    FigurasArray[pivoteX + 2, pivoteY + 1] = NumFigura;

                                    Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                                    Ubicacion   u2   = new Ubicacion(pivoteX, pivoteY + 1);
                                    Ubicacion   u3   = new Ubicacion(pivoteX + 1, pivoteY + 1);
                                    Ubicacion   u4   = new Ubicacion(pivoteX + 2, pivoteY + 1);
                                    Ubicacion[] list = new Ubicacion[4];
                                    list[0] = u1;
                                    list[1] = u2;
                                    list[2] = u3;
                                    list[3] = u4;
                                    int    nOper = GenerarNumeroOperacion(1);
                                    Figura fig   = new Figura(list, "ele", nOper, 1, 0, 0);

                                    SetListaFiguras(fig);

                                    NumFigura++;
                                    return(true);
                                }
                                else
                                {
                                    return(false);
                                }
                            }
                            if (orientacion == 4)
                            {
                                ubi1 = matrizFiguras[pivoteX, pivoteY];
                                ubi2 = matrizFiguras[pivoteX, pivoteY + 1];
                                ubi3 = matrizFiguras[pivoteX + 1, pivoteY];
                                ubi4 = matrizFiguras[pivoteX + 2, pivoteY];

                                if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                                {
                                    FigurasArray[pivoteX, pivoteY]     = NumFigura;
                                    FigurasArray[pivoteX, pivoteY + 1] = NumFigura;
                                    FigurasArray[pivoteX + 1, pivoteY] = NumFigura;
                                    FigurasArray[pivoteX + 2, pivoteY] = NumFigura;

                                    Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                                    Ubicacion   u2   = new Ubicacion(pivoteX, pivoteY + 1);
                                    Ubicacion   u3   = new Ubicacion(pivoteX + 1, pivoteY);
                                    Ubicacion   u4   = new Ubicacion(pivoteX + 2, pivoteY);
                                    Ubicacion[] list = new Ubicacion[4];
                                    list[0] = u1;
                                    list[1] = u2;
                                    list[2] = u3;
                                    list[3] = u4;
                                    int    nOper = GenerarNumeroOperacion(1);
                                    Figura fig   = new Figura(list, "ele", nOper, 1, 0, 0);

                                    SetListaFiguras(fig);

                                    NumFigura++;
                                    return(true);
                                }
                                else
                                {
                                    return(false);
                                }
                            }
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
                else
                {
                    return(false);
                }
            }
            if (figura == "linea")
            {
                if (orientacion == 1)  //vertical
                {
                    if (pivoteX + 3 < N)
                    {
                        ubi1 = matrizFiguras[pivoteX, pivoteY];
                        ubi2 = matrizFiguras[pivoteX + 1, pivoteY];
                        ubi3 = matrizFiguras[pivoteX + 2, pivoteY];
                        ubi4 = matrizFiguras[pivoteX + 3, pivoteY];

                        if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                        {
                            FigurasArray[pivoteX, pivoteY]     = NumFigura;
                            FigurasArray[pivoteX + 1, pivoteY] = NumFigura;
                            FigurasArray[pivoteX + 2, pivoteY] = NumFigura;
                            FigurasArray[pivoteX + 3, pivoteY] = NumFigura;

                            Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                            Ubicacion   u2   = new Ubicacion(pivoteX + 1, pivoteY);
                            Ubicacion   u3   = new Ubicacion(pivoteX + 2, pivoteY);
                            Ubicacion   u4   = new Ubicacion(pivoteX + 3, pivoteY);
                            Ubicacion[] list = new Ubicacion[4];
                            list[0] = u1;
                            list[1] = u2;
                            list[2] = u3;
                            list[3] = u4;
                            int    nOper = GenerarNumeroOperacion(1);
                            Figura fig   = new Figura(list, "linea", nOper, 1, 0, 0);

                            SetListaFiguras(fig);

                            NumFigura++;
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
                if (orientacion == 2)  //horizontal
                {
                    if (pivoteY + 3 < N)
                    {
                        ubi1 = matrizFiguras[pivoteX, pivoteY];
                        ubi2 = matrizFiguras[pivoteX, pivoteY + 1];
                        ubi3 = matrizFiguras[pivoteX, pivoteY + 2];
                        ubi4 = matrizFiguras[pivoteX, pivoteY + 3];

                        if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                        {
                            FigurasArray[pivoteX, pivoteY]     = NumFigura;
                            FigurasArray[pivoteX, pivoteY + 1] = NumFigura;
                            FigurasArray[pivoteX, pivoteY + 2] = NumFigura;
                            FigurasArray[pivoteX, pivoteY + 3] = NumFigura;

                            Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                            Ubicacion   u2   = new Ubicacion(pivoteX, pivoteY + 1);
                            Ubicacion   u3   = new Ubicacion(pivoteX, pivoteY + 2);
                            Ubicacion   u4   = new Ubicacion(pivoteX, pivoteY + 3);
                            Ubicacion[] list = new Ubicacion[4];
                            list[0] = u1;
                            list[1] = u2;
                            list[2] = u3;
                            list[3] = u4;
                            int    nOper = GenerarNumeroOperacion(1);
                            Figura fig   = new Figura(list, "linea", nOper, 1, 0, 0);

                            SetListaFiguras(fig);

                            NumFigura++;
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            if (figura == "te")
            {
                if (orientacion == 1)
                {
                    if (pivoteY - 1 >= 0 && pivoteY + 1 < N && pivoteX + 1 < N)
                    {
                        ubi1 = matrizFiguras[pivoteX, pivoteY];
                        ubi2 = matrizFiguras[pivoteX + 1, pivoteY];
                        ubi3 = matrizFiguras[pivoteX + 1, pivoteY - 1];
                        ubi4 = matrizFiguras[pivoteX + 1, pivoteY + 1];

                        if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                        {
                            FigurasArray[pivoteX, pivoteY]         = NumFigura;
                            FigurasArray[pivoteX + 1, pivoteY]     = NumFigura;
                            FigurasArray[pivoteX + 1, pivoteY - 1] = NumFigura;
                            FigurasArray[pivoteX + 1, pivoteY + 1] = NumFigura;

                            Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                            Ubicacion   u2   = new Ubicacion(pivoteX + 1, pivoteY);
                            Ubicacion   u3   = new Ubicacion(pivoteX + 1, pivoteY - 1);
                            Ubicacion   u4   = new Ubicacion(pivoteX + 1, pivoteY + 1);
                            Ubicacion[] list = new Ubicacion[4];
                            list[0] = u1;
                            list[1] = u2;
                            list[2] = u3;
                            list[3] = u4;
                            int    nOper = GenerarNumeroOperacion(1);
                            Figura fig   = new Figura(list, "te", nOper, 1, 0, 0);

                            SetListaFiguras(fig);
                            NumFigura++;
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
                if (orientacion == 2)
                {
                    if (pivoteY + 2 < N && pivoteX + 1 < N)
                    {
                        ubi1 = matrizFiguras[pivoteX, pivoteY];
                        ubi2 = matrizFiguras[pivoteX, pivoteY + 1];
                        ubi3 = matrizFiguras[pivoteX, pivoteY + 2];
                        ubi4 = matrizFiguras[pivoteX + 1, pivoteY + 1];

                        if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                        {
                            FigurasArray[pivoteX, pivoteY]         = NumFigura;
                            FigurasArray[pivoteX, pivoteY + 1]     = NumFigura;
                            FigurasArray[pivoteX, pivoteY + 2]     = NumFigura;
                            FigurasArray[pivoteX + 1, pivoteY + 1] = NumFigura;

                            Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                            Ubicacion   u2   = new Ubicacion(pivoteX, pivoteY + 1);
                            Ubicacion   u3   = new Ubicacion(pivoteX, pivoteY + 2);
                            Ubicacion   u4   = new Ubicacion(pivoteX + 1, pivoteY + 1);
                            Ubicacion[] list = new Ubicacion[4];
                            list[0] = u1;
                            list[1] = u2;
                            list[2] = u3;
                            list[3] = u4;
                            int    nOper = GenerarNumeroOperacion(1);
                            Figura fig   = new Figura(list, "te", nOper, 1, 0, 0);

                            SetListaFiguras(fig);
                            NumFigura++;
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
                else
                {
                    return(false);
                }
            }
            if (figura == "snake")     //la figura que parece una serpiente
            {
                if (orientacion == 1)  //horizontal
                {
                    if (pivoteY - 1 >= 0 && pivoteY + 1 < N && pivoteX + 1 < N)
                    {
                        ubi1 = matrizFiguras[pivoteX, pivoteY];
                        ubi2 = matrizFiguras[pivoteX + 1, pivoteY];
                        ubi3 = matrizFiguras[pivoteX + 1, pivoteY - 1];
                        ubi4 = matrizFiguras[pivoteX, pivoteY + 1];

                        if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                        {
                            FigurasArray[pivoteX, pivoteY]         = NumFigura;
                            FigurasArray[pivoteX + 1, pivoteY]     = NumFigura;
                            FigurasArray[pivoteX + 1, pivoteY - 1] = NumFigura;
                            FigurasArray[pivoteX, pivoteY + 1]     = NumFigura;

                            Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                            Ubicacion   u2   = new Ubicacion(pivoteX + 1, pivoteY);
                            Ubicacion   u3   = new Ubicacion(pivoteX + 1, pivoteY - 1);
                            Ubicacion   u4   = new Ubicacion(pivoteX, pivoteY + 1);
                            Ubicacion[] list = new Ubicacion[4];
                            list[0] = u1;
                            list[1] = u2;
                            list[2] = u3;
                            list[3] = u4;
                            int    nOper = GenerarNumeroOperacion(1);
                            Figura fig   = new Figura(list, "snake", nOper, 1, 0, 0);

                            int index = ListaFiguras.Length;
                            SetListaFiguras(fig);

                            NumFigura++;
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
                if (orientacion == 2)   //vertical
                {
                    if (pivoteY + 1 < N && pivoteX + 2 < N)
                    {
                        ubi1 = matrizFiguras[pivoteX, pivoteY];
                        ubi2 = matrizFiguras[pivoteX + 1, pivoteY];
                        ubi3 = matrizFiguras[pivoteX + 1, pivoteY + 1];
                        ubi4 = matrizFiguras[pivoteX + 2, pivoteY + 1];

                        if ((ubi1 == 0) && (ubi2 == 0) && (ubi3 == 0) && (ubi4 == 0))    //Que no haya casillas ocupadas
                        {
                            FigurasArray[pivoteX, pivoteY]         = NumFigura;
                            FigurasArray[pivoteX + 1, pivoteY]     = NumFigura;
                            FigurasArray[pivoteX + 1, pivoteY + 1] = NumFigura;
                            FigurasArray[pivoteX + 2, pivoteY + 1] = NumFigura;

                            Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                            Ubicacion   u2   = new Ubicacion(pivoteX + 1, pivoteY);
                            Ubicacion   u3   = new Ubicacion(pivoteX + 1, pivoteY + 1);
                            Ubicacion   u4   = new Ubicacion(pivoteX + 2, pivoteY + 1);
                            Ubicacion[] list = new Ubicacion[4];
                            list[0] = u1;
                            list[1] = u2;
                            list[2] = u3;
                            list[3] = u4;

                            int    nOper = GenerarNumeroOperacion(1);
                            Figura fig   = new Figura(list, "snake", nOper, 1, 0, 0);

                            int index = ListaFiguras.Length;
                            SetListaFiguras(fig);

                            NumFigura++;
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                }
            }
            if (figura == "solo")
            {
                ubi1 = matrizFiguras[pivoteX, pivoteY];
                if (ubi1 == 0)
                {
                    FigurasArray[pivoteX, pivoteY] = NumFigura;
                    Ubicacion u1 = new Ubicacion(pivoteX, pivoteY);

                    Ubicacion[] list = new Ubicacion[1];
                    list[0] = u1;


                    Figura fig = new Figura(list, "solo", 0, 1, 0, 0);

                    int index = ListaFiguras.Length;
                    SetListaFiguras(fig);
                    NumFigura++;
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            if (figura == "dos")
            {
                if (orientacion == 1)    //vertical
                {
                    if (pivoteX + 1 < N)
                    {
                        ubi1 = matrizFiguras[pivoteX, pivoteY];
                        ubi2 = matrizFiguras[pivoteX + 1, pivoteY];

                        if (ubi1 == 0 && ubi2 == 0)
                        {
                            FigurasArray[pivoteX, pivoteY]     = NumFigura;
                            FigurasArray[pivoteX + 1, pivoteY] = NumFigura;
                            Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                            Ubicacion   u2   = new Ubicacion(pivoteX + 1, pivoteY);
                            Ubicacion[] list = new Ubicacion[2];
                            list[0] = u1;
                            list[1] = u2;

                            int    nOper = GenerarNumeroOperacion(2);
                            Figura fig   = new Figura(list, "dos", nOper, 2, 1, 0);

                            int index = ListaFiguras.Length;
                            SetListaFiguras(fig);
                            NumFigura++;
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
                if (orientacion == 2)    //horizontal
                {
                    if (pivoteY + 1 < N)
                    {
                        ubi1 = matrizFiguras[pivoteX, pivoteY];
                        ubi2 = matrizFiguras[pivoteX, pivoteY + 1];

                        if (ubi1 == 0 && ubi2 == 0)
                        {
                            FigurasArray[pivoteX, pivoteY]     = NumFigura;
                            FigurasArray[pivoteX, pivoteY + 1] = NumFigura;
                            Ubicacion   u1   = new Ubicacion(pivoteX, pivoteY);
                            Ubicacion   u2   = new Ubicacion(pivoteX, pivoteY + 1);
                            Ubicacion[] list = new Ubicacion[2];
                            list[0] = u1;
                            list[1] = u2;
                            int    nOper = GenerarNumeroOperacion(2);
                            Figura fig   = new Figura(list, "dos", nOper, 2, 1, 0);
                            int    index = ListaFiguras.Length;
                            SetListaFiguras(fig);
                            NumFigura++;
                            return(true);
                        }
                        else
                        {
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
            }


            return(false);
        }