예제 #1
0
        public bool Resolver(int [,] tablero)
        {
            Ubicacion ubi = NextEmpty(tablero);

            if (ubi.GetX() == -1 && ubi.GetY() == -1)       //resuelto
            {
                return(true);
            }

            int parX = ubi.GetX();
            int parY = ubi.GetY();

            for (int i = 1; i <= N; i++)
            {
                if (VerificarFilasYColumnas(tablero, i, parX, parY) && VerificarFigura(tablero, i, parX, parY) && VerificarOperacion(tablero, i, parX, parY))
                {
                    Tablero[parX, parY] = i;
                    ModificarFigura(parX, parY, i, 1);
                    //Console.WriteLine("-------------------------------------------------------------------------");
                    //Print(tablero);
                    if (Resolver(tablero))
                    {
                        return(true);
                    }


                    //Console.WriteLine("**************************************************************************");
                    int actual = tablero[parX, parY];
                    tablero[parX, parY] = 0;
                    ModificarFigura(parX, parY, actual, 2);
                    //Print(tablero);
                    //Console.WriteLine("**************************************************************************");
                }
            }
            return(false);
        }
예제 #2
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);
        }
예제 #3
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++;
            }
        }