예제 #1
0
        /* FIN ATRIBUTOS */

        /* METODO QUE CREA UN LABERINTO DESDE PROLOG E INICIALIZA EL ATRIBUTO REPRESENTACIONLABERINTO Y LABERINTO
         * LA CANTIDAD DE TROFEOS ESTA DADA POR EL NIVEL DE DIFICULTAD ENTRE 0 Y 10, NADA DE TROFEOS O LLENO.
         */
        public void crearLaberinto(int dimensionX, int dimensionY, int nivelDificultad)
        {
            Term nil = SymbolTerm.MakeSymbol("0");
            bool resultado;
            //laberinto(L,DimX,DimY,Dificultad,MinimosCaminosSalida(noImplementado))
            Predicate    predicate;
            VariableTerm laberintoCompleto;
            Laberinto_5  lab;

            /* INSTANCIAS */
            VariableTerm laberinto  = new VariableTerm();
            VariableTerm trofeos    = new VariableTerm();
            VariableTerm inicio     = new VariableTerm();
            VariableTerm final      = new VariableTerm();
            IntegerTerm  dimX       = new IntegerTerm(dimensionX);
            IntegerTerm  dimY       = new IntegerTerm(dimensionY);
            IntegerTerm  dificultad = new IntegerTerm(nivelDificultad);

            if (pInterface == null)
            {
                pInterface = new PrologInterface();
            }
            /* FIN */

            //MIENTRAS NO GENERE UN RESULTADO INTENTARA CREAR UN LABERINTO
            do
            {
                /* === INSTANCIAS Y EJECUCION PARA LA CREACION DEL LABERINTO MEDIANTE PROLOG === */
                laberintoCompleto = new VariableTerm();
                lab       = new Laberinto_5(laberintoCompleto, dimX, dimY, dificultad, nil, new ReturnCs(pInterface));
                predicate = lab;
                pInterface.SetPredicate(predicate);
                resultado = pInterface.Call();
                /* === FINALIZA INSTANCIAS Y EJECUCIONES === */
                if (resultado)
                {
                    /* === ASIGNACION DE ATRIBUTOS DE CLASE === */
                    predicate = new Get_Lab_2(laberintoCompleto, laberinto, new ReturnCs(pInterface));
                    pInterface.SetPredicate(predicate);
                    pInterface.Call();
                    predicate = new Get_Trof_2(laberintoCompleto, trofeos, new ReturnCs(pInterface));
                    pInterface.SetPredicate(predicate);
                    pInterface.Call();
                    predicate = new Get_Inicio_2(laberintoCompleto, inicio, new ReturnCs(pInterface));
                    pInterface.SetPredicate(predicate);
                    pInterface.Call();
                    predicate = new Get_Final_2(laberintoCompleto, final, new ReturnCs(pInterface));
                    pInterface.SetPredicate(predicate);
                    pInterface.Call();
                    /* === FIN ASIGNACION === */

                    RepresentacionLaberinto = laberintoCompleto.Dereference();
                    Console.WriteLine(RepresentacionLaberinto.ToString());
                    Laberinto = new Laberinto((ListTerm)laberinto.Dereference(), (ListTerm)trofeos.Dereference(), ((IntegerTerm)inicio.Dereference()).IntValue(), ((IntegerTerm)final.Dereference()).IntValue(), dimensionX, dimensionY);
                }
            } while (!resultado);
        }