public bool Assert(string clause)
 {
     PlEngine.PlThreadAttachEngine();
     return(PlQuery.PlCall("assert(" + clause + ")"));
 }
示例#2
0
 public void AssertFact(string prologFact)
 {
     PlQuery.PlCall("assert(" + prologFact + ")");
     SaveLine(prologFact + ".");
 }
示例#3
0
        private void btnRollDice_Click(object sender, EventArgs e)
        {
            BrojNaKocki = baciKockicu();

            brojacKocka++;
            btnRollDice.Enabled           = false;
            playerOnMove.NumberRolledDice = brojacKocka;
            playerOnMove.DiceNumber       = BrojNaKocki;
            string boja = vratiBoju(playerOnMove.Color);

            if (PlQuery.PlCall("ima_zeton_na_ploci(" + playerOnMove.ID + ")")) // AKO IMA ŽETON NA PLOČI
            {
                if (BrojNaKocki == 6)
                {
                    if (PlQuery.PlCall("provjeri_zeton_start(" + boja + ")"))
                    {
                        foreach (Token t in playerOnMove.TokenList)
                        {
                            if (t.Status == 0)
                            {
                                DialogResult dr = MessageBox.Show("Imate neaktivnih žetona. Želite li izvaditi novog na ploču?", "Novi žeton", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                                if (dr == DialogResult.Yes)
                                {
                                    postaviZetonNaStart(t);
                                }

                                break;
                            }
                        }
                    }
                    else
                    {
                        PlTerm  term = PlTerm.PlVar();
                        PlQuery q    = new PlQuery("zeton", new PlTermV(term));
                        q.NextSolution();
                        int   zetonID    = int.Parse(term.ToString());
                        Token tudjiToken = null;
                        foreach (Player p in Player.PlayerList)
                        {
                            foreach (Token t in p.TokenList)
                            {
                                if (t.ID == zetonID && p != playerOnMove)
                                {
                                    tudjiToken = t;
                                    break;
                                }
                            }
                        }

                        if (tudjiToken != null)
                        {
                            foreach (Token t in playerOnMove.TokenList)
                            {
                                if (t.Status == 0)
                                {
                                    DialogResult dr = MessageBox.Show("Možete izvaditi novi žeton i pritom srušiti tuđeg. Vaš izbor?", "Novi žeton", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                                    if (dr == DialogResult.Yes)
                                    {
                                        string b = vratiBoju(tudjiToken.Player.Color);
                                        if (PlQuery.PlCall("vrati_zeton_u_kucicu(" + zetonID + ", " + b + ")"))
                                        {
                                            tudjiToken.setHousesLocation(zetonID, tudjiToken.Player.Color);
                                            int boardFieldId = getStartBoardFieldId(playerOnMove.Color);
                                            //BoardField bf = BoardField.BoardFieldList.Find(x => x.ID == boardFieldId);
                                            //bf.removeTokenFromField();
                                        }
                                        postaviZetonNaStart(t);
                                    }
                                }
                            }
                        }
                    }
                }

                lblStatus.Text = "Klikni na žeton na ploči kako bi ga pomaknuo.";
            }
            else     //AKO NEMA ŽETON NA PLOČI
            {
                if (BrojNaKocki == 6)
                {
                    if (PlQuery.PlCall("provjeri_zeton_start(" + boja + ")"))
                    {
                        foreach (Token t in playerOnMove.TokenList)
                        {
                            if (t.Status == 0)
                            {
                                postaviZetonNaStart(t);
                                break;
                            }
                        }
                    }
                    else
                    {
                        PlTerm  term = PlTerm.PlVar();
                        PlQuery q    = new PlQuery("zeton", new PlTermV(term));
                        q.NextSolution();
                        int   zetonID    = int.Parse(term.ToString());
                        Token tudjiToken = null;
                        foreach (Player p in Player.PlayerList)
                        {
                            foreach (Token t in p.TokenList)
                            {
                                if (t.ID == zetonID)
                                {
                                    tudjiToken = t;
                                    break;
                                }
                            }
                        }
                        foreach (Token t in playerOnMove.TokenList)
                        {
                            if (t.Status == 0)
                            {
                                string b = vratiBoju(tudjiToken.Player.Color);
                                if (PlQuery.PlCall("vrati_zeton_u_kucicu(" + zetonID + ", " + b + ")"))
                                {
                                    tudjiToken.setHousesLocation(zetonID, tudjiToken.Player.Color);
                                }
                                postaviZetonNaStart(t);
                                break;
                            }
                        }
                    }
                }

                if (brojacKocka < 3)
                {
                    btnRollDice.Enabled = true;
                    lblStatus.Text      = "Bacao si kocku " + brojacKocka + " puta. Možeš bacati ponovno.";
                }
                else
                {
                    lblStatus.Text      = "Bacao si kocku " + brojacKocka + " puta. Na redu je sljedeći igrač.";
                    playerOnMove        = iduciIgrac(playerOnMove);
                    btnRollDice.Enabled = true;
                }
            }

            bool gotovo = true;

            foreach (Token t in playerOnMove.TokenList)
            {
                if (t.Status < 3)
                {
                    gotovo = false;
                }
            }
            if (gotovo)
            {
                MessageBox.Show("Igra je završila! Pobijedio/la je " + playerOnMove.Nickname + Environment.NewLine + "Čestitamo!", "Igra završena", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnRollDice.Enabled = false;
                lblStatus.Text      = "Igra završena.";
            }
        }
示例#4
0
 private bool ModuleCall(string s, params PlTerm[] terms)
 {
     return(PlQuery.PlCall(ClientModule, ClientPrefix + s, ToPLCSV1(ThisClientTerm, terms)));
 }
示例#5
0
        private void btnConsult_Click(object sender, EventArgs e)
        {
            var value = tbInput.Text.ToLower();

            lbConsult.Items.Clear();
            var load = new PlQuery("load('Animals.bd')");

            try
            {
                load.NextSolution();
            }
            catch (Exception exception)
            {
                Debug.WriteLine(exception.StackTrace);
            }

            if (tbInput.Text.Length != 0)
            {
                PlQuery query;
                switch (cbInferencias.SelectedIndex)
                {
                case 0:
                    query = new PlQuery("lives_in(" + value + ",Animal)");
                    foreach (var q in query.SolutionVariables)
                    {
                        lbConsult.Items.Add(q["Animal"].ToString());
                    }
                    break;

                case 1:
                    query = new PlQuery("habitat_type(" + value + ",Biome)");
                    foreach (var q in query.SolutionVariables)
                    {
                        lbConsult.Items.Add(q["Biome"].ToString());
                    }
                    break;

                case 2:
                    query = new PlQuery("biomes_of_animal(" + value + ",Biome)");
                    foreach (var q in query.SolutionVariables)
                    {
                        lbConsult.Items.Add(q["Biome"].ToString());
                    }
                    break;

                case 3:
                    query = new PlQuery("major_enemies(" + value + ",Enemy)");
                    foreach (var q in query.SolutionVariables)
                    {
                        lbConsult.Items.Add(q["Enemy"].ToString());
                    }
                    break;

                case 4:
                    query = new PlQuery("live_together(" + value + ",AnimalB)");
                    foreach (var q in query.SolutionVariables)
                    {
                        lbConsult.Items.Add(q["AnimalB"].ToString());
                    }
                    break;
                }
            }
        }
示例#6
0
        private void Odgovori_Load(object sender, EventArgs e)
        {
            Environment.SetEnvironmentVariable("SWI_HOME_DIR", @"swipl");
            Environment.SetEnvironmentVariable("Path", @"swipl");
            Environment.SetEnvironmentVariable("Path", @"swipl\bin");
            string[] p = { "-q", "-f", @"kviz.pl" };
            if (!PlEngine.IsInitialized)
            {
                PlEngine.Initialize(p);
            }



            PlQuery prvoPitanje = new PlQuery("prvo(Odgovor)");

            foreach (PlQueryVariables variable in prvoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Prvo)
                {
                    button1.BackColor = Color.DarkGreen;
                }
                else
                {
                    button1.BackColor = Color.DarkRed;
                }
            }

            PlQuery drugoPitanje = new PlQuery("drugo(Odgovor)");

            foreach (PlQueryVariables variable in drugoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Drugo)
                {
                    button2.BackColor = Color.DarkGreen;
                }
                else
                {
                    button2.BackColor = Color.DarkRed;
                }
            }

            PlQuery trecePitanje = new PlQuery("trece(Odgovor)");

            foreach (PlQueryVariables variable in trecePitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Trece)
                {
                    button3.BackColor = Color.DarkGreen;
                }
                else
                {
                    button3.BackColor = Color.DarkRed;
                }
            }

            PlQuery cetvrtoPitanje = new PlQuery("cetvrto(Odgovor)");

            foreach (PlQueryVariables variable in cetvrtoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Cetvrto)
                {
                    button4.BackColor = Color.DarkGreen;
                }
                else
                {
                    button4.BackColor = Color.DarkRed;
                }
            }

            PlQuery petoPitanje = new PlQuery("peto(Odgovor)");

            foreach (PlQueryVariables variable in petoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Peto)
                {
                    button5.BackColor = Color.DarkGreen;
                }
                else
                {
                    button5.BackColor = Color.DarkRed;
                }
            }

            PlQuery sestoPitanje = new PlQuery("sesto(Odgovor)");

            foreach (PlQueryVariables variable in sestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Sesto)
                {
                    button6.BackColor = Color.DarkGreen;
                }
                else
                {
                    button6.BackColor = Color.DarkRed;
                }
            }

            PlQuery sedmooPitanje = new PlQuery("sedmo(Odgovor)");

            foreach (PlQueryVariables variable in sedmooPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Sedmo)
                {
                    button7.BackColor = Color.DarkGreen;
                }
                else
                {
                    button7.BackColor = Color.DarkRed;
                }
            }

            PlQuery osmoPitanje = new PlQuery("osmo(Odgovor)");

            foreach (PlQueryVariables variable in osmoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Osmo)
                {
                    button8.BackColor = Color.DarkGreen;
                }
                else
                {
                    button8.BackColor = Color.DarkRed;
                }
            }

            PlQuery devetoPitanje = new PlQuery("deveto(Odgovor)");

            foreach (PlQueryVariables variable in devetoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Deveto)
                {
                    button9.BackColor = Color.DarkGreen;
                }
                else
                {
                    button9.BackColor = Color.DarkRed;
                }
            }

            PlQuery desetoPitanje = new PlQuery("deseto(Odgovor)");

            foreach (PlQueryVariables variable in desetoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Deseto)
                {
                    button10.BackColor = Color.DarkGreen;
                }
                else
                {
                    button10.BackColor = Color.DarkRed;
                }
            }

            PlQuery jedanaestoPitanje = new PlQuery("jedanaesto(Odgovor)");

            foreach (PlQueryVariables variable in jedanaestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Jedanaesto)
                {
                    button11.BackColor = Color.DarkGreen;
                }
                else
                {
                    button11.BackColor = Color.DarkRed;
                }
            }

            PlQuery dvanaestoPitanje = new PlQuery("dvanaesto(Odgovor)");

            foreach (PlQueryVariables variable in dvanaestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Dvanaesto)
                {
                    button12.BackColor = Color.DarkGreen;
                }
                else
                {
                    button12.BackColor = Color.DarkRed;
                }
            }

            PlQuery trinaestoPitanje = new PlQuery("trinaesto(Odgovor)");

            foreach (PlQueryVariables variable in trinaestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Trinaesto)
                {
                    button13.BackColor = Color.DarkGreen;
                }
                else
                {
                    button13.BackColor = Color.DarkRed;
                }
            }

            PlQuery cetrnaestoPitanje = new PlQuery("cetrnaesto(Odgovor)");

            foreach (PlQueryVariables variable in cetrnaestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Cetrnaesto)
                {
                    button14.BackColor = Color.DarkGreen;
                }
                else
                {
                    button14.BackColor = Color.DarkRed;
                }
            }

            PlQuery petnaestoPitanje = new PlQuery("petnaesto(Odgovor)");

            foreach (PlQueryVariables variable in petnaestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Petnaesto)
                {
                    button15.BackColor = Color.DarkGreen;
                }
                else
                {
                    button15.BackColor = Color.DarkRed;
                }
            }
        }
示例#7
0
        private void cargarDatosCombobox()
        {
            List <string> procesadores = new List <string>();
            List <string> palcaMadre   = new List <string>();
            List <string> gpu          = new List <string>();
            List <string> ram          = new List <string>();
            List <string> fuente       = new List <string>();
            List <string> periferico   = new List <string>();
            List <string> disco        = new List <string>();
            List <string> monitor      = new List <string>();
            List <string> gabinete     = new List <string>();

            procesadores.Add("todos");
            palcaMadre.Add("todos");
            gpu.Add("todos");
            ram.Add("todos");
            fuente.Add("todos");
            periferico.Add("todos");
            disco.Add("todos");
            monitor.Add("todos");
            gabinete.Add("todos");

            PlQuery Procesadores = new PlQuery("procesador(X,_).");

            foreach (PlQueryVariables item in Procesadores.SolutionVariables)
            {
                procesadores.Add(item["X"].ToString());
            }
            PlQuery PlacaMadre = new PlQuery("placaMadre(X,_).");

            foreach (PlQueryVariables item in PlacaMadre.SolutionVariables)
            {
                palcaMadre.Add(item["X"].ToString());
            }
            PlQuery Gpu = new PlQuery("gpu(X,_).");

            foreach (PlQueryVariables item in Gpu.SolutionVariables)
            {
                gpu.Add(item["X"].ToString());
            }
            PlQuery Ram = new PlQuery("ram(X,_).");

            foreach (PlQueryVariables item in Ram.SolutionVariables)
            {
                ram.Add(item["X"].ToString());
            }
            PlQuery Fuente = new PlQuery("fuentePw(X,_).");

            foreach (PlQueryVariables item in Fuente.SolutionVariables)
            {
                fuente.Add(item["X"].ToString());
            }
            PlQuery Periferico = new PlQuery("periferico(X,_).");

            foreach (PlQueryVariables item in Periferico.SolutionVariables)
            {
                periferico.Add(item["X"].ToString());
            }
            PlQuery Disco = new PlQuery("disco(X,_).");

            foreach (PlQueryVariables item in Disco.SolutionVariables)
            {
                disco.Add(item["X"].ToString());
            }
            PlQuery Monitor = new PlQuery("monitor(X,_).");

            foreach (PlQueryVariables item in Monitor.SolutionVariables)
            {
                monitor.Add(item["X"].ToString());
            }
            PlQuery Gabinete = new PlQuery("gabinete(X,_).");

            foreach (PlQueryVariables item in Gabinete.SolutionVariables)
            {
                gabinete.Add(item["X"].ToString());
            }



            cmb_procesadores.DataSource = procesadores;
            cmb_PlacaMadre.DataSource   = palcaMadre;
            cmb_GPU.DataSource          = gpu;
            cmb_Ram.DataSource          = ram;
            cmb_FuentePw.DataSource     = fuente;
            cmb_Periferico.DataSource   = periferico;
            cmb_Disco.DataSource        = disco;
            cmb_Monitor.DataSource      = monitor;
            cmb_Gabinete.DataSource     = gabinete;
        }
 public void t_prolog_exception_3()
 {
     PlQuery.PlCall("open(temp_kill, nonsens, F)");
 }
示例#9
0
 private void build_pred()
 {
     Assert.IsTrue(PlQuery.PlCall("assert( (test(comp(X,Y)) :- member(Z,[1,2,3]), atomic_list_concat([X,Z],Y) ) )"));
 }
示例#10
0
        public void Pl_query_version()
        {
            long v = PlQuery.Query(PlQuerySwitch.Version);

            Assert.AreEqual(60605, v, "SWI-Prolog version number ");
        }
示例#11
0
 public void PlCallQueryTooMannyVariableException()
 {
     PlQuery.PlCallQuery("member(A, X)");
 }
示例#12
0
 public void PlCallQueryNoVariableException()
 {
     PlQuery.PlCallQuery("member(a, [a,b,c])");
 }
示例#13
0
        public void PlCallNoVariableFail()
        {
            bool result = PlQuery.PlCall("is_list(123)");

            Assert.IsFalse(result);
        }
示例#14
0
        public void PlCallNoVariableTrue()
        {
            bool result = PlQuery.PlCall("is_list([a,b,c])");

            Assert.IsTrue(result);
        }
示例#15
0
        private void btn_Cargar_Click(object sender, EventArgs e)
        {
            ltb_Computadores.Items.Clear();
            PlQuery busque      = null;
            string  procesador  = "Proce";
            string  placa_madre = "Placa_m";
            string  gpu         = "Gpu";
            string  ram         = "Ram";
            string  Fuentepw    = "Fuente_pw";
            string  periferico  = "Perif";
            string  disco       = "Disco";
            string  monitor     = "Moni";
            string  gabinete    = "Gabin";
            int     valor       = 0;

            if (!(Convert.ToString(cmb_procesadores.SelectedItem).Equals("todos")))
            {
                procesador = Convert.ToString(cmb_procesadores.SelectedItem);
            }
            if (!(Convert.ToString(cmb_PlacaMadre.SelectedItem).Equals("todos")))
            {
                placa_madre = Convert.ToString(cmb_PlacaMadre.SelectedItem);
            }
            if (!(Convert.ToString(cmb_GPU.SelectedItem).Equals("todos")))
            {
                gpu = Convert.ToString(cmb_GPU.SelectedItem);
            }
            if (!(Convert.ToString(cmb_Ram.SelectedItem).Equals("todos")))
            {
                ram = Convert.ToString(cmb_Ram.SelectedItem);
            }
            if (!(Convert.ToString(cmb_FuentePw.SelectedItem).Equals("todos")))
            {
                Fuentepw = Convert.ToString(cmb_FuentePw.SelectedItem);
            }
            if (!(Convert.ToString(cmb_Periferico.SelectedItem).Equals("todos")))
            {
                periferico = Convert.ToString(cmb_Periferico.SelectedItem);
            }
            if (!(Convert.ToString(cmb_Disco.SelectedItem).Equals("todos")))
            {
                disco = Convert.ToString(cmb_Disco.SelectedItem);
            }
            if (!(Convert.ToString(cmb_Monitor.SelectedItem).Equals("todos")))
            {
                monitor = Convert.ToString(cmb_Monitor.SelectedItem);
            }
            if (!(Convert.ToString(cmb_Gabinete.SelectedItem).Equals("todos")))
            {
                gabinete = Convert.ToString(cmb_Gabinete.SelectedItem);
            }
            if (txt_Presupuesto.Text.Length > 0)
            {
                valor = int.Parse(txt_Presupuesto.Text);
            }



            PlQuery cargar = new PlQuery("cargar('componentes.bd')");

            cargar.NextSolution();


            if (txt_Presupuesto.Text.Length > 0)
            {
                busque = new PlQuery("busqueda_valor(" + procesador + "," + placa_madre + "," + gpu + "," + ram + "," + Fuentepw + "," + periferico + "," + disco + "," + monitor + "," + gabinete + "," + valor + ",Precio).");
            }
            else
            {
                busque = new PlQuery("busqueda(" + procesador + "," + placa_madre + "," + gpu + "," + ram + "," + Fuentepw + "," + periferico + "," + disco + "," + monitor + "," + gabinete + ",Precio).");
            }


            foreach (PlQueryVariables item in busque.SolutionVariables)
            {
                //Porcesador
                if (!(Convert.ToString(cmb_procesadores.SelectedItem).Equals("todos")))
                {
                    procesador = Convert.ToString(cmb_procesadores.SelectedItem);
                    ltb_Computadores.Items.Add("Procesador = " + procesador);
                }
                else
                {
                    ltb_Computadores.Items.Add("Procesador = " + item["Proce"].ToString());
                }

                //Placa Madre
                if (!(Convert.ToString(cmb_PlacaMadre.SelectedItem).Equals("todos")))
                {
                    placa_madre = Convert.ToString(cmb_PlacaMadre.SelectedItem);
                    ltb_Computadores.Items.Add("Placa Madre = " + placa_madre);
                }
                else
                {
                    ltb_Computadores.Items.Add("Placa Madre = " + item["Placa_m"].ToString());
                }

                //GPU
                if (!(Convert.ToString(cmb_GPU.SelectedItem).Equals("todos")))
                {
                    gpu = Convert.ToString(cmb_GPU.SelectedItem);
                    ltb_Computadores.Items.Add("GPU = " + gpu);
                }
                else
                {
                    ltb_Computadores.Items.Add("GPU = " + item["Gpu"].ToString());
                }

                //Ram
                if (!(Convert.ToString(cmb_Ram.SelectedItem).Equals("todos")))
                {
                    ram = Convert.ToString(cmb_Ram.SelectedItem);
                    ltb_Computadores.Items.Add("Ram = " + ram);
                }
                else
                {
                    ltb_Computadores.Items.Add("Ram = " + item["Ram"].ToString());
                }

                //Fuente de Poder
                if (!(Convert.ToString(cmb_FuentePw.SelectedItem).Equals("todos")))
                {
                    Fuentepw = Convert.ToString(cmb_FuentePw.SelectedItem);
                    ltb_Computadores.Items.Add("Fuente de Poder = " + Fuentepw);
                }
                else
                {
                    ltb_Computadores.Items.Add("Fuente de Poder = " + item["Fuente_pw"].ToString());
                }

                //Periferico
                if (!(Convert.ToString(cmb_Periferico.SelectedItem).Equals("todos")))
                {
                    periferico = Convert.ToString(cmb_Periferico.SelectedItem);
                    ltb_Computadores.Items.Add("Periferico = " + periferico);
                }
                else
                {
                    ltb_Computadores.Items.Add("Periferico = " + item["Perif"].ToString());
                }

                //Disco
                if (!(Convert.ToString(cmb_Disco.SelectedItem).Equals("todos")))
                {
                    disco = Convert.ToString(cmb_Disco.SelectedItem);
                    ltb_Computadores.Items.Add("Disco = " + disco);
                }
                else
                {
                    ltb_Computadores.Items.Add("Disco = " + item["Disco"].ToString());
                }

                //Monitor
                if (!(Convert.ToString(cmb_Monitor.SelectedItem).Equals("todos")))
                {
                    monitor = Convert.ToString(cmb_Monitor.SelectedItem);
                    ltb_Computadores.Items.Add("Monitor = " + monitor);
                }
                else
                {
                    ltb_Computadores.Items.Add("Monitor = " + item["Moni"].ToString());
                }

                //Gabinete
                if (!(Convert.ToString(cmb_Monitor.SelectedItem).Equals("todos")))
                {
                    gabinete = Convert.ToString(cmb_Gabinete.SelectedItem);
                    ltb_Computadores.Items.Add("Gabinete = " + gabinete);
                }
                else
                {
                    ltb_Computadores.Items.Add("Gabinete = " + item["Gabin"].ToString());
                }
                ltb_Computadores.Items.Add("Precio = " + item["Precio"].ToString());
                ltb_Computadores.Items.Add("");
                ltb_Computadores.Items.Add("--------------------------------");
                ltb_Computadores.Items.Add("");
            }

            PlQuery Otro = new PlQuery("procesador(intel,Y).");

            foreach (PlQueryVariables item in Otro.SolutionVariables)
            {
            }
        }
 public void t_prolog_exception_2()
 {
     PlQuery.PlCall("sumlist([1,error],L)");
 }
示例#17
0
        public static int UnifyToPrologImmediate(object o, PlTerm term)
        {
            uint TermRef = term.TermRef;
            if (o is PlTerm)
            {
                return libpl.PL_unify(TermRef, ((PlTerm)o).TermRef);
            }
            if (o is string)
            {
                string s = (string)o;
                switch (VMStringsAsAtoms)
                {
                    case libpl.CVT_STRING:
                        {
                            try
                            {
                                return libpl.PL_unify_string_chars(TermRef, (string)o);
                            }
                            catch (Exception)
                            {

                                return UnifyAtom(TermRef, s);
                            }
                        }
                    case libpl.CVT_ATOM:
                        try
                        {
                            return libpl.PL_unify_atom_chars(TermRef, (string)o);
                        }
                        catch (Exception)
                        {

                            return UnifyAtom(TermRef, s);
                        }
                    case libpl.CVT_LIST:
                        return libpl.PL_unify_list_chars(TermRef, (string)o);
                    default:
                        Warn("UNKNOWN VMStringsAsAtoms {0}", VMStringsAsAtoms);
                        return libpl.PL_fail;
                }
            }
            if (o == null)
            {
                return AddTagged(TermRef, "null");
            }

            if (o is Type || o is Type)
            {
                if (true)
                {
                    //lock (ToFromConvertLock)
                    {
                        var tag = object_to_tag(o);
                        AddTagged(TermRef, tag);
                        return libpl.PL_succeed;
                    }
                }
                return PlSucceedOrFail(term.Unify(typeToSpec((Type)o)));
            }

            Type t = o.GetType();
            if (t == typeof(void))
            {
                return AddTagged(TermRef, "void");
            }
            if (o is ValueType)
            {
                if (o is bool)
                {
                    bool tf = (bool)o;
                    return AddTagged(TermRef, tf ? "true" : "false");
                }
                if (o is char)
                {
                    try
                    {
                        char ch = (char)o;
                        string cs = new string(ch, 1);
                        switch (VMStringsAsAtoms)
                        {
                            case libpl.CVT_STRING:
                                return libpl.PL_unify_atom_chars(TermRef, cs);
                            case libpl.CVT_ATOM:
                                return libpl.PL_unify_atom_chars(TermRef, cs);
                            case libpl.CVT_LIST:
                                return libpl.PL_unify_integer(TermRef, (int)ch);
                            default:
                                Warn("UNKNOWN VMStringsAsAtoms {0}", VMStringsAsAtoms);
                                return libpl.PL_fail;
                        }
                    }
                    catch (Exception e)
                    {
                        Warn("@TODO unmappable errors? {0} type {1}", o, t);
                        //
                    }
                }
                if (t.IsEnum)
                {
                    int res = FromEnum(TermRef, o, t);
                    ///term.ToString();
                    return res;
                }
                if (t.IsPrimitive)
                {
                    try
                    {
                        int res = ToVMNumber(o, term);
                        if (res == libpl.PL_succeed) return res;
                        if (res == libpl.PL_fail) return res;
                        if (res != -1)
                        {
                            // Warn("@TODO Missing code for ToVmNumber? " + o + " type " + t);
                            return res;
                        }
                        if (t.IsPrimitive)
                        {
                            Warn("@TODO Missing code for primitive? {0} type {1}", o, t);
                        }
                    }
                    catch (Exception e)
                    {
                        Warn("@TODO unmappable errors? {0} type {1}", o, t);
                    }
                }
            }
            lock (FunctorToLayout)
            {
                PrologTermLayout layout;
                if (TypeToLayout.TryGetValue(t, out layout))
                {
                    MemberInfo[] tGetFields = layout.FieldInfos;// GetStructFormat(t);
                    int len = tGetFields.Length;
                    PlTermV tv = NewPlTermV(len);
                    for (int i = 0; i < len; i++)
                    {
                        object v = GetMemberValue(tGetFields[i], o);
                        tv[i].FromObject((v));
                    }
                    return PlSucceedOrFail(term.Unify(PlC(layout.Name, tv)));
                }
            }
            lock (FunctorToRecomposer)
            {
                PrologTermRecomposer layout = GetTypeMap(t, TypeToRecomposer);
                if (layout != null)
                {
                    lock (ToFromConvertLock)
                    {
                        var tag = object_to_tag(o);
                        uint newref = libpl.PL_new_term_refs(2);
                        AddTagged(newref, tag);
                        PlTerm into = new PlTerm(newref);
                        PlTerm outto = new PlTerm(newref + 1);
                        var ret = PlQuery.PlCall(layout.module, layout.obj2r, new PlTermV(into, outto));
                        if (ret)
                        {
                            return term.Unify(outto) ? libpl.PL_succeed
                                   : libpl.PL_fail;

                        }
                    }
                }
            }
            if (o is IList)
            {

            }
            if (IsStructRecomposable(t))
            {
                return ToFieldLayout("struct", typeToName(t), o, t, term, false, false);
            }
            if (o is EventArgs)
            {
                return ToFieldLayout("event", typeToName(t), o, t, term, false, false);
            }
            if (t.IsArray)
            {
                Array al = (Array) o;
                if (false && al.Length > 0 && al.Length < 1024)
                {
                    Type et = t.GetElementType();
                    object firstNonNull = null;
                    foreach (var ele in al)
                    {
                        if (ele!=null)
                        {
                            firstNonNull = ele;
                        }
                    }
                    var needMake = firstNonNull != null;
                    if (needMake)
                    {
                        PlTerm newVar = PlTerm.PlVar();
                        needMake = NeedsToMakeRef(firstNonNull, newVar);
                    }
                    if (!needMake)
                    {
                        return PlSucceedOrFail(unifyArrayToTerm(al, term));
                    }
                }
            }
            return PlObject(TermRef, o);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            PlQuery cargar = new PlQuery("cargar('pru.bd')");

            cargar.NextSolution();
            Console.WriteLine(si1.Checked);
            if (si1.Checked == true)
            {
                if (si5.Checked == true)
                {
                    PlQuery consulta = new PlQuery("recetade(M,espasmos)");
                    foreach (PlQueryVariables z in consulta.SolutionVariables)
                    {
                        if (z["M"].ToString().Equals("moquillo"))
                        {
                            listBox1.Items.Add("Su perro presenta:\tMoquillo");
                            listBox1.Items.Add("Tratamiento: El veterinario le puede prescribir el uso de ");
                            listBox1.Items.Add("antibióticos de amplio espectro, antipiréticos, analgésicos,");
                            listBox1.Items.Add(" anticonvulsivos, soluciones electrolíticas.");
                            listBox1.Items.Add("");
                        }
                    }
                }
            }
            if (si2.Checked == true)
            {
                if (si4.Checked == true)
                {
                    PlQuery consulta = new PlQuery("recetade(M,duerme)");
                    foreach (PlQueryVariables z in consulta.SolutionVariables)
                    {
                        if (z["M"].ToString().Equals("edad"))
                        {
                            listBox1.Items.Add("Su perro presenta:\tEdad avanzada");
                            listBox1.Items.Add("Tratamiento: Alimentar e hidratar muy bien a el can.");
                            listBox1.Items.Add("");
                        }
                    }
                }
            }
            if (si3.Checked == true)
            {
                if (si10.Checked == true)
                {
                    PlQuery consulta = new PlQuery("recetade(M,diarrea)");
                    foreach (PlQueryVariables z in consulta.SolutionVariables)
                    {
                        if (z["M"].ToString().Equals("infeccion"))
                        {
                            listBox1.Items.Add("Su perro presenta:\tInfeccion");
                            listBox1.Items.Add("Tratamiento: Se le proportcionaran ciertos antibioticos.");
                            listBox1.Items.Add("");
                        }
                    }
                }
            }


            if (si6.Checked == true)
            {
                PlQuery consulta = new PlQuery("recetade(M,caidapel)");
                foreach (PlQueryVariables z in consulta.SolutionVariables)
                {
                    if (z["M"].ToString().Equals("infeccion"))
                    {
                        listBox1.Items.Add("Su perro presenta:\tBacterias");
                        listBox1.Items.Add("Tratamiento: Se le proportcionaran ciertos antibioticos.");
                        listBox1.Items.Add("y debe tener cuidado de que el perro no lastime la herida.");
                        listBox1.Items.Add("");
                    }
                }
            }
            if (si7.Checked == true)
            {
                PlQuery consulta = new PlQuery("recetade(M,tos)");
                foreach (PlQueryVariables z in consulta.SolutionVariables)
                {
                    if (z["M"].ToString().Equals("clima"))
                    {
                        listBox1.Items.Add("Su perro presenta:\tTos seca");
                        listBox1.Items.Add("Tratamiento: resguardelo en su hogar, ya que el clima.");
                        listBox1.Items.Add("es una causa muy comun de esta tos en los perros.");
                        listBox1.Items.Add("");
                    }
                }
            }
            if (si8.Checked == true)
            {
                if (si10.Checked == true)
                {
                    PlQuery consulta = new PlQuery("recetade(M,diarrea)");
                    foreach (PlQueryVariables z in consulta.SolutionVariables)
                    {
                        if (z["M"].ToString().Equals("clima"))
                        {
                            listBox1.Items.Add("Su perro presenta:\tParvovirus");
                            listBox1.Items.Add("Tratamiento: Usar antieméticos como la metoclopramida.");
                            listBox1.Items.Add("en infusión, podria necesitar una transfusión sanguínea.");
                            listBox1.Items.Add("");
                        }
                    }
                }
            }
            if (si9.Checked == true)
            {
                PlQuery consulta = new PlQuery("recetade(M,espuma)");
                foreach (PlQueryVariables z in consulta.SolutionVariables)
                {
                    if (z["M"].ToString().Equals("rabia"))
                    {
                        listBox1.Items.Add("Su perro presenta:\tRabia");
                        listBox1.Items.Add("Tratamiento: llévelo con su veterinario cuanto antes.");
                        listBox1.Items.Add("");
                    }
                }
            }


            /*
             * listBox1.Items.Clear();
             * PlQuery cargar = new PlQuery("cargar('pru.bd')");
             * cargar.NextSolution();
             *
             * if(checkBox1.Checked==true)
             * {
             *  PlQuery consulta = new PlQuery("recetade(M,"+ valor + ")");
             *  foreach (PlQueryVariables z in consulta.SolutionVariables)
             *      listBox1.Items.Add(z["M"].ToString());
             * }
             * if (checkBox2.Checked == true)
             * {
             *  PlQuery consulta = new PlQuery("atiende_especialista(E," + valor + ")");
             *  foreach (PlQueryVariables z in consulta.SolutionVariables)
             *      listBox1.Items.Add(z["E"].ToString());
             * }
             * if (checkBox3.Checked == true)
             * {
             *  PlQuery consulta = new PlQuery("mereseta(Es,M," + valor + ")");
             *  foreach (PlQueryVariables z in consulta.SolutionVariables)
             *      listBox1.Items.Add(z["Es"].ToString());
             *  foreach (PlQueryVariables z in consulta.SolutionVariables)
             *      listBox1.Items.Add(z["M"].ToString());
             * }
             */
        }
示例#19
0
        private void button1_Click(object sender, EventArgs e)
        {
            switch (seleccion)
            {
            case 1:
                if (this.opcion1.Checked == true)
                {
                    totalLista1++;
                }
                else
                if (this.opcion2.Checked == true)
                {
                    totalLista2++;
                }
                else
                if (this.opcion3.Checked == true)
                {
                    totalLista3++;
                }
                else
                if (this.opcion4.Checked == true)
                {
                    totalLista4++;
                }

                pregunta2();
                Limpiar();

                break;

            case 2:
                if (this.opcion1.Checked == true)
                {
                    totalLista1++;
                }
                else
                if (this.opcion2.Checked == true)
                {
                    totalLista2++;
                }
                else
                if (this.opcion3.Checked == true)
                {
                    totalLista1++;
                }
                else
                if (this.opcion4.Checked == true)
                {
                    totalLista2++;
                }
                pregunta3();
                Limpiar();
                break;

            case 3:
                if (this.opcion1.Checked == true)
                {
                    totalLista4 = +2;
                }
                else
                if (this.opcion2.Checked == true)
                {
                    totalLista3++;
                }
                else
                if (this.opcion3.Checked == true)
                {
                    totalLista1++;
                }
                else
                if (this.opcion4.Checked == true)
                {
                    totalLista1++;
                    totalLista2++;
                    totalLista3++;
                    totalLista4++;
                }
                pregunta4();
                Limpiar();
                break;

            case 4:
                if (this.opcion1.Checked == true)
                {
                    totalLista1--;
                }
                else
                if (this.opcion2.Checked == true)
                {
                    totalLista1--;
                }
                else
                if (this.opcion3.Checked == true)
                {
                    totalLista2--;
                }
                else
                if (this.opcion4.Checked == true)
                {
                    totalLista3--;
                    totalLista4--;
                }
                pregunta5();
                Limpiar();
                break;

            case 5:
                if (this.opcion1.Checked == true)
                {
                    totalLista1++;
                }
                else
                if (this.opcion2.Checked == true)
                {
                    totalLista4++;
                }
                else
                if (this.opcion3.Checked == true)
                {
                    totalLista2++;
                }
                else
                if (this.opcion4.Checked == true)
                {
                    totalLista2++;
                    totalLista3++;
                }
                pregunta6();
                Limpiar();
                break;

            case 6:
                if (this.opcion1.Checked == true)
                {
                    totalLista2++;
                }
                else
                if (this.opcion2.Checked == true)
                {
                    totalLista3++;
                }
                else
                if (this.opcion3.Checked == true)
                {
                    totalLista1++;
                }
                else
                if (this.opcion4.Checked == true)
                {
                    totalLista2++;
                }
                pregunta7();
                Limpiar();
                break;

            case 7:
                if (this.opcion1.Checked == true)
                {
                    totalLista1++;
                    totalLista3++;
                }
                else
                if (this.opcion2.Checked == true)
                {
                    totalLista2++;
                }
                else
                if (this.opcion3.Checked == true)
                {
                    totalLista4++;
                }
                else
                if (this.opcion4.Checked == true)
                {
                    totalLista1++;
                }
                pregunta8();
                Limpiar();
                break;

            case 8:
                if (this.opcion1.Checked == true)
                {
                    totalLista3++;
                    totalLista2++;
                }
                else
                if (this.opcion2.Checked == true)
                {
                    totalLista1++;
                }
                else
                if (this.opcion3.Checked == true)
                {
                    totalLista1++;
                }
                else
                if (this.opcion4.Checked == true)
                {
                    totalLista3++;
                    totalLista4++;
                }
                pregunta9();
                Limpiar();
                break;

            case 9:
                if (this.opcion1.Checked == true)
                {
                    totalLista3++;
                    totalLista4++;
                }
                else
                if (this.opcion2.Checked == true)
                {
                    totalLista3++;
                    totalLista4++;
                }
                else
                if (this.opcion3.Checked == true)
                {
                    totalLista4++;
                }
                else
                if (this.opcion4.Checked == true)
                {
                    totalLista4++;
                }
                pregunta10();
                Limpiar();
                break;

            case 10:
                if (this.opcion1.Checked == true)
                {
                    totalLista2++;
                }
                else
                if (this.opcion2.Checked == true)
                {
                    totalLista1++;
                }
                else
                if (this.opcion3.Checked == true)
                {
                    totalLista2++;
                }
                else
                if (this.opcion4.Checked == true)
                {
                    totalLista1++;
                }

                Limpiar();

                resultado = verificarMayor(totalLista1, totalLista2, totalLista3, totalLista4);

                if (totalLista1 == resultado)
                {
                    generosResultantes = " AVENTURAS, ACCIÓN , COMEDIAS, INTERNACIONALES.";
                    consultaFinal      = "'aventuras','accion','comedias','internacionales',R1,R2,R3,R4";
                }
                else
                if (totalLista2 == resultado)
                {
                    generosResultantes = " TERROR , DRAMA , ROMANTICO , TRHILLERS/SUSPENSE";
                    consultaFinal      = "'terror','drama','romantico','thrillers',R1,R2,R3,R4";
                }
                else
                if (totalLista3 == resultado)
                {
                    generosResultantes = " FAMILIA , CIENCIA FICCIÓN , FANTASTICAS , ROMANTICAS. ";
                    consultaFinal      = "'familia','ciencia_ficcion','fantasticas','romanticas',R1,R2,R3,R4";
                }
                else
                if (totalLista4 == resultado)
                {
                    generosResultantes = " ANIMES , DOCUMENTALES , INFANTILES , PREMIADAS";
                    consultaFinal      = "'anime','documentales','infantiles','premiadas',R1,R2,R3,R4";
                }

                MessageBox.Show("LA LISTA DE GENEROS QUE SE ADAPTAN A TUS GUSTOS SON: " + generosResultantes.ToString() + "\n \n SE PRESENTARA LA LISTA DE PELICULAS RECOMENDADAS PARA TI",
                                " RESULTADO DE TEST ", MessageBoxButtons.OK, MessageBoxIcon.Information);

                /*string datox = "X";
                 * string enviar = "jogador(" + datox + ")";*/

                //CONSULTA FINAL
                //listaPeliculas1('aventuras','accion','comedias','internacionales',R1,R2,R3,R4).

                PlQuery pelicula = new PlQuery("listaPeliculas(" + consultaFinal + ")");

                foreach (PlQueryVariables v in pelicula.SolutionVariables)
                {
                    var genero = v["R1"].Concat(v["R2"].Concat(v["R3"].Concat(v["R4"])));

                    mostrarPelicula(genero);
                }

                groupBoxPeliculas.Enabled = true;


                this.pregunta.Text = " \n            CUESTIONARIO FINALIZADO.         ";
                opcion1.Enabled    = false;
                opcion2.Enabled    = false;
                opcion3.Enabled    = false;
                opcion4.Enabled    = false;
                button1.Enabled    = false;

                break;

            default:

                break;
            }
        }
示例#20
0
        private void Zavrsetak_Load(object sender, EventArgs e)
        {
            int brojac = 0;

            Environment.SetEnvironmentVariable("SWI_HOME_DIR", @"swipl");
            Environment.SetEnvironmentVariable("Path", @"swipl");
            Environment.SetEnvironmentVariable("Path", @"swipl\bin");
            string[] p = { "-q", "-f", @"kviz.pl" };
            if (!PlEngine.IsInitialized)
            {
                PlEngine.Initialize(p);
            }

            PlQuery prvoPitanje = new PlQuery("prvo(Odgovor)");

            foreach (PlQueryVariables variable in prvoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Prvo)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery drugoPitanje = new PlQuery("drugo(Odgovor)");

            foreach (PlQueryVariables variable in drugoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Drugo)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery trecePitanje = new PlQuery("trece(Odgovor)");

            foreach (PlQueryVariables variable in trecePitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Trece)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery cetvrtoPitanje = new PlQuery("cetvrto(Odgovor)");

            foreach (PlQueryVariables variable in cetvrtoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Cetvrto)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery petoPitanje = new PlQuery("peto(Odgovor)");

            foreach (PlQueryVariables variable in petoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Peto)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery sestoPitanje = new PlQuery("sesto(Odgovor)");

            foreach (PlQueryVariables variable in sestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Sesto)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery sedmooPitanje = new PlQuery("sedmo(Odgovor)");

            foreach (PlQueryVariables variable in sedmooPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Sedmo)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery osmoPitanje = new PlQuery("osmo(Odgovor)");

            foreach (PlQueryVariables variable in osmoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Osmo)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery devetoPitanje = new PlQuery("deveto(Odgovor)");

            foreach (PlQueryVariables variable in devetoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Deveto)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery desetoPitanje = new PlQuery("deseto(Odgovor)");

            foreach (PlQueryVariables variable in desetoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Deseto)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery jedanaestoPitanje = new PlQuery("jedanaesto(Odgovor)");

            foreach (PlQueryVariables variable in jedanaestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Jedanaesto)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery dvanaestoPitanje = new PlQuery("dvanaesto(Odgovor)");

            foreach (PlQueryVariables variable in dvanaestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Dvanaesto)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery trinaestoPitanje = new PlQuery("trinaesto(Odgovor)");

            foreach (PlQueryVariables variable in trinaestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Trinaesto)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery cetrnaestoPitanje = new PlQuery("cetrnaesto(Odgovor)");

            foreach (PlQueryVariables variable in cetrnaestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Cetrnaesto)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }

            PlQuery petnaestoPitanje = new PlQuery("petnaesto(Odgovor)");

            foreach (PlQueryVariables variable in petnaestoPitanje.SolutionVariables)
            {
                if (variable["Odgovor"].ToString() == PohranaOdgovora.Petnaesto)
                {
                    brojac++;
                }
                lblBodovi.Text = brojac.ToString();
            }
        }
示例#21
0
        private void btnConsulta_Click(object sender, EventArgs e)
        {
            //Limpar a tela de consulta a cada nova interação
            listaPeliculas.Items.Clear();
            //buscar os dados do banco de dados criado através do Prolog
            PlQuery carrega = new PlQuery("carrega('peliculas.bd')");

            carrega.NextSolution();
            List <string> lista = new List <string>();

            //Usando estrutura condicional para as consultas
            switch (Convert.ToString(cbOpcoes.SelectedItem))
            {
            case "Atacante Brasileiro":
                PlQuery atacantebrasileiro = new PlQuery("atacantebrasileiro(X)");

                foreach (PlQueryVariables v in atacantebrasileiro.SolutionVariables)
                {
                    listaPeliculas.Items.Add(v["X"].ToString());
                }
                break;

            case "Meia Brasileiro":
                PlQuery meiabrasileiro = new PlQuery("meiabrasileiro(X)");
                foreach (PlQueryVariables v in meiabrasileiro.SolutionVariables)
                {
                    listaPeliculas.Items.Add(v["X"].ToString());
                }
                break;

            case "Atacante Europeu":
                PlQuery atacanteeuropeu = new PlQuery("atacanteeuropeu(X)");
                foreach (PlQueryVariables v in atacanteeuropeu.SolutionVariables)
                {
                    listaPeliculas.Items.Add(v["X"].ToString());
                }
                break;

            case "Zagueiro Brasileiro":
                PlQuery zagueirobrasileiro = new PlQuery("zagueirobrasileiro(X)");
                foreach (PlQueryVariables v in zagueirobrasileiro.SolutionVariables)
                {
                    listaPeliculas.Items.Add(v["X"].ToString());
                }
                break;

            case "Prueba":
                string datox  = "X";
                string enviar = "jogador(" + datox + ")";

                PlQuery zagueiro = new PlQuery("pelicula(X,R)");
                int     cont     = 0;
                foreach (PlQueryVariables v in zagueiro.SolutionVariables)
                {
                    //lista.Add(v["X"].ToString());
                    listaPeliculas.Items.Add(v["X"].ToString());
                }
                //datavg.Rows[cont].Cells[0].Value = v["X"].ToString();
                //cont++;
                //datavg.Rows[0].Cells[v].Value = v["X"].ToString();
                //listaPeliculas.Items.Add(v["Y"].ToString());
                break;
            }
        }
示例#22
0
        //[MTAThread]
        public static void Main(string[] args0)
        {
            PingThreadFactories();
            bool demo = false;

            SetupProlog();

            if (demo)
            {
                DoQuery("asserta(fff(1))");
                DoQuery("asserta(fff(9))");
                DoQuery("nl");
                DoQuery("flush");

                PlAssert("father(martin, inka)");
                if (!PlCsDisabled)
                {
                    PlQuery.PlCall("assert(father(uwe, gloria))");
                    PlQuery.PlCall("assert(father(uwe, melanie))");
                    PlQuery.PlCall("assert(father(uwe, ayala))");
                    using (PlQuery q = new PlQuery("father(P, C), atomic_list_concat([P,' is_father_of ',C], L)"))
                    {
                        foreach (PlTermV v in q.Solutions)
                        {
                            ConsoleTrace(ToCSString(v));
                        }

                        foreach (PlQueryVariables v in q.SolutionVariables)
                        {
                            ConsoleTrace(v["L"].ToString());
                        }


                        ConsoleTrace("all child's from uwe:");
                        q.Variables["P"].Unify("uwe");
                        foreach (PlQueryVariables v in q.SolutionVariables)
                        {
                            ConsoleTrace(v["C"].ToString());
                        }
                    }
                    //PlQuery.PlCall("ensure_loaded(library(thread_util))");
                    //Warning: [Thread 2] Thread running "thread_run_interactor" died on exception: thread_util:attach_console/0: Undefined procedure: thread_util:win_open_console/5
                    //PlQuery.PlCall("interactor");
                    //Delegate Foo0 = foo0;
                    RegisterPLCSForeigns();
                }

                PlAssert("tc2:-foo2(X,Y),writeq(f(X,Y)),nl,X=5");
                PlAssert("tc3:-foo3(X,Y,Z),Z,writeln(f(X,Y,Z)),X=5");
            }

#if USE_IKVM
            ClassFile.ThrowFormatErrors = false;
            libpl.NoToString            = true;
            //SafelyRun((() => PlCall("jpl0")));
            //SafelyRun((() => DoQuery(new Query(new jpl.Atom("jpl0")))));
            libpl.NoToString            = false;
            ClassFile.ThrowFormatErrors = true;
#endif
            if (args0.Length > 0)
            {
                int i = 0;
                foreach (var s in args0)
                {
                    if (s == "-f")
                    {
                        string s1 = args0[i + 1];
                        args0[i + 1] = "['" + s1 + "']";
                        continue;
                    }
                    PlCall(s);
                    i++;
                }
            }
            if (!JplDisabled)
            {
#if USE_IKVM
                var run = new jpl.Atom("prolog");
                while (!IsHalted)
                {
                    SafelyRun(() => DoQuery(new jpl.Query(run)));
                }
#endif
            }
            else
            {
                if (!PlCsDisabled)
                {
                    // loops on exception
                    while (!SafelyRun(() => libpl.PL_toplevel()))
                    {
                        ;
                    }
                }
            }



            ConsoleTrace("press enter to exit");
            Console.ReadLine();
            SafelyRun(() => PlEngine.PlCleanup());

            ConsoleTrace("finshed!");
        }
示例#23
0
        private void btnFiltrar_Click(object sender, EventArgs e)
        {
            listaPeliculas.Items.Clear();

            if (checkAño.Checked == true && checkGenero.Checked == true && checkEdad.Checked == true)
            {
                int    año    = Convert.ToInt16(comboAño.SelectedItem);
                string genero = Convert.ToString(comboGenero.SelectedItem);
                int    edad   = Convert.ToInt16(comboEdad.SelectedItem);

                string consulta = "filtrarPeliculaAñoGeneroEdad(" + año + "," + "'" + genero + "'" + "," + edad + ",R)";

                PlQuery pelicula = new PlQuery(consulta);
                foreach (PlQueryVariables v in pelicula.SolutionVariables)
                {
                    var peliculas = v["R"];

                    mostrarPelicula(peliculas);
                }
            }

            else if (checkAño.Checked == true && checkGenero.Checked == true && checkEdad.Checked == false)
            {
                int    año    = Convert.ToInt16(comboAño.SelectedItem);
                string genero = Convert.ToString(comboGenero.SelectedItem);

                string consulta = "filtrarPeliculaAñoGenero(" + año + "," + "'" + genero + "'" + ",R)";

                PlQuery pelicula = new PlQuery(consulta);
                foreach (PlQueryVariables v in pelicula.SolutionVariables)
                {
                    var peliculas = v["R"];

                    mostrarPelicula(peliculas);
                }
            }

            else if (checkAño.Checked == true && checkGenero.Checked == false && checkEdad.Checked == true)
            {
                int año = Convert.ToInt16(comboAño.SelectedItem);

                int edad = Convert.ToInt16(comboEdad.SelectedItem);

                string consulta = "filtrarPeliculaAñoEdad(" + año + "," + edad + ",R)";

                PlQuery pelicula = new PlQuery(consulta);
                foreach (PlQueryVariables v in pelicula.SolutionVariables)
                {
                    var peliculas = v["R"];

                    mostrarPelicula(peliculas);
                }
            }

            else if (checkAño.Checked == true && checkGenero.Checked == false && checkEdad.Checked == false)
            {
                int año = Convert.ToInt16(comboAño.SelectedItem);

                string consulta = "peliculasPorAnio(" + año + ",R)";

                PlQuery pelicula = new PlQuery(consulta);
                foreach (PlQueryVariables v in pelicula.SolutionVariables)
                {
                    var peliculas = v["R"];

                    mostrarPelicula(peliculas);
                }
            }

            else if (checkAño.Checked == false && checkGenero.Checked == true && checkEdad.Checked == true)
            {
                string genero   = Convert.ToString(comboGenero.SelectedItem);
                int    edad     = Convert.ToInt16(comboEdad.SelectedItem);
                string consulta = "filtrarPeliculaGeneroEdad('" + genero + "'," + edad + ",R)";

                PlQuery pelicula = new PlQuery(consulta);
                foreach (PlQueryVariables v in pelicula.SolutionVariables)
                {
                    var peliculas = v["R"];

                    mostrarPelicula(peliculas);
                }
            }

            else if (checkAño.Checked == false && checkGenero.Checked == true && checkEdad.Checked == false)
            {
                string genero = Convert.ToString(comboGenero.SelectedItem);

                string consulta = "peliculasPorGenero('" + genero + "',R)";

                PlQuery pelicula = new PlQuery(consulta);
                foreach (PlQueryVariables v in pelicula.SolutionVariables)
                {
                    var peliculas = v["R"];

                    mostrarPelicula(peliculas);
                }
            }

            else if (checkAño.Checked == false && checkGenero.Checked == false && checkEdad.Checked == true)
            {
                int edad = Convert.ToInt16(comboEdad.SelectedItem);

                string consulta = "peliculasPorEdad(" + edad + ",R)";

                PlQuery pelicula = new PlQuery(consulta);
                foreach (PlQueryVariables v in pelicula.SolutionVariables)
                {
                    var peliculas = v["R"];

                    mostrarPelicula(peliculas);
                }
            }
            button2.BackColor = Color.Green;
        }
示例#24
0
 private bool ModuleCall0(string s, PlTermV termV)
 {
     return(PlQuery.PlCall(ClientModule, ClientPrefix + s, termV));
 }
示例#25
0
        private void Token_MouseClick(object sender, MouseEventArgs e)
        {
            string boja = vratiBoju(this.Player.Color);

            if (PlQuery.PlCall("provjeri_polje(" + this.ID + ", " + boja + ")"))
            {
                PlTerm  t1 = PlTerm.PlVar();
                PlQuery q2 = new PlQuery("novo_polje", new PlTermV(t1));
                q2.NextSolution();
                int novoPolje = int.Parse(t1.ToString());
                q2.Dispose();

                PlQuery.PlCall("pomakni_zeton(" + this.ID + ", " + novoPolje + ")");
                BoardField bf;

                if (novoPolje > 40)
                {
                    bf          = BoardField.BoardFieldList.Find(x => x.ID == novoPolje && x.Color == this.Player.Color);
                    this.Status = 3;
                }
                else
                {
                    bf = BoardField.BoardFieldList.Find(x => x.ID == novoPolje);
                }

                bf.addTokenToField(this);
                //bf = BoardField.BoardFieldList.Find(x => x.Token == this);
                //bf.removeTokenFromField();
            }
            else
            {
                PlTerm  var = PlTerm.PlVar();
                PlQuery q   = new PlQuery("zeton", new PlTermV(var));
                q.NextSolution();
                int zetonID = int.Parse(var.ToString());
                q.Dispose();

                foreach (Player p in Player.PlayerList)
                {
                    foreach (Token t in p.TokenList)
                    {
                        if (t.ID == zetonID)
                        {
                            PlTerm  t1 = PlTerm.PlVar();
                            PlQuery q2 = new PlQuery("novo_polje", new PlTermV(t1));
                            q2.NextSolution();
                            int novoPolje = int.Parse(t1.ToString());
                            q2.Dispose();

                            if (p.ID == Player.ID) // radi se o "mom" žetonu
                            {
                                novoPolje++;
                                preskociZetone(novoPolje);
                                BoardField bf;
                                if (novoPolje > 40)
                                {
                                    bf          = BoardField.BoardFieldList.Find(x => x.ID == novoPolje && x.Color == this.Player.Color);
                                    this.Status = 3;
                                }
                                else
                                {
                                    bf = BoardField.BoardFieldList.Find(x => x.ID == novoPolje);
                                }
                                bf.addTokenToField(this);
                                bf = BoardField.BoardFieldList.Find(x => x.Token == this);
                                bf.removeTokenFromField();
                            }
                            else // radi se o tuđem žetonu
                            {
                                DialogResult dr = MessageBox.Show("Zelite li srušiti tuđi žeton?", "Rušenje žetona", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                                if (dr == DialogResult.Yes)
                                {
                                    BoardField bf;
                                    string     b = vratiBoju(p.Color);
                                    if (PlQuery.PlCall("vrati_zeton_u_kucicu(" + zetonID + ", " + b + ")"))
                                    {
                                        //bf = BoardField.BoardFieldList.Find(x => x.Token == t);
                                        //bf.removeTokenFromField();

                                        t.setHousesLocation(zetonID, p.Color);
                                    }

                                    preskociZetone(novoPolje);

                                    if (novoPolje > 40)
                                    {
                                        bf          = BoardField.BoardFieldList.Find(x => x.ID == novoPolje && x.Color == this.Player.Color);
                                        this.Status = 3;
                                    }
                                    else
                                    {
                                        bf = BoardField.BoardFieldList.Find(x => x.ID == novoPolje);
                                    }
                                    bf.addTokenToField(this);
                                }
                                else //ne želim rušiti žeton
                                {
                                    novoPolje++;
                                    preskociZetone(novoPolje);
                                    BoardField bf;
                                    if (novoPolje > 40)
                                    {
                                        bf          = BoardField.BoardFieldList.Find(x => x.ID == novoPolje && x.Color == this.Player.Color);
                                        this.Status = 3;
                                    }
                                    else
                                    {
                                        bf = BoardField.BoardFieldList.Find(x => x.ID == novoPolje);
                                    }
                                    bf.addTokenToField(this);
                                }
                            }
                            break;
                        }
                    }
                }
            }
        }
示例#26
0
        private void btnSiguiente_Click(object sender, EventArgs e)
        {
            PlQuery cargar = new PlQuery("cargar('SistemaExperto.pl')");
            String  alternativa;

            p = new int[15];
            int i;
            int c = 0;

            for (i = 1; i <= 14; i++)
            {
                alternativa = "";
                switch (i)
                {
                case 1:

                    if (radioButton1.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton2.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton3.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton4.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton5.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta1 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");

                    foreach (PlQueryVariables z in consulta1.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 2:
                    if (radioButton6.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton7.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton8.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton9.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton10.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta2 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");

                    foreach (PlQueryVariables z in consulta2.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 3:
                    if (radioButton11.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton12.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton13.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton14.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton15.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta3 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta3.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 4:
                    if (radioButton16.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton17.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton18.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton19.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton20.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta4 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta4.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 5:
                    if (radioButton21.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton22.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton23.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton24.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton25.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta5 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta5.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 6:
                    if (radioButton26.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton27.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton28.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton29.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton30.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta6 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta6.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 7:
                    if (radioButton31.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton32.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton33.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton34.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton35.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta7 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta7.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 8:
                    if (radioButton36.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton37.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton38.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton39.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton40.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta8 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta8.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 9:
                    if (radioButton41.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton42.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton43.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton44.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton45.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta9 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta9.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 10:
                    if (radioButton46.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton47.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton48.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton49.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton50.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta10 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta10.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 11:
                    if (radioButton51.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton52.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton53.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton54.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton55.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta11 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta11.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 12:
                    if (radioButton56.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton57.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton58.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton59.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton60.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta12 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta12.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 13:
                    if (radioButton61.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton62.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton63.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton64.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton65.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta13 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta13.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;

                case 14:
                    if (radioButton66.Checked)
                    {
                        alternativa = "No Presente";
                    }
                    if (radioButton67.Checked)
                    {
                        alternativa = "Presente Eventualmente";
                    }
                    if (radioButton68.Checked)
                    {
                        alternativa = "Presente Con Frecuencia Leve";
                    }
                    if (radioButton69.Checked)
                    {
                        alternativa = "Presente Con Frecuencia";
                    }
                    if (radioButton70.Checked)
                    {
                        alternativa = "Presente Con Intensidad Severa";
                    }

                    PlQuery consulta14 = new PlQuery("puntaje_ansiedad('" + alternativa + "',X).");
                    foreach (PlQueryVariables z in consulta14.SolutionVariables)
                    {
                        p[i] = Convert.ToInt32(z["X"].ToString());
                        c++;
                    }
                    break;
                }

                puntaje += p[i];
            }

            if (c < 14)
            {
                MessageBox.Show("RESPONDER TODAS LAS PREGUNTAS", "TEST", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                string resultado = "";

                if (puntaje >= 14 && puntaje <= 17)
                {
                    resultado = "Ansiedad Leve";
                }
                else if (puntaje >= 18 && puntaje <= 44)
                {
                    resultado = "Ansiedad Moderada";
                }
                else
                {
                    resultado = "Estado Severo de Ansiedad";
                }
                ResultadoAnsiedad d = new ResultadoAnsiedad();
                d.lblResultado.Text = resultado;
                d.Show();
                this.Close();
            }
        }
示例#27
0
        private void znajdz_rozwiazanie_Click(object sender, RoutedEventArgs e)
        {
            sciezka_do_wyswietlenia = null;
            try//sprawdzenie poprawnosci wprowadzonych danych
            {
                dobry_wynik     = int.Parse(dobrze_textBox.Text);
                najlepszy_wynik = int.Parse(najlepiej_textBox.Text);
                liczba_krokow   = int.Parse(liczba_krokow_textBox.Text);
                if (dobry_wynik <= 0 || najlepszy_wynik <= 0 || liczba_krokow < 4 || liczba_krokow % 2 != 0 || liczba_krokow > szerokosc * wysokosc)
                {
                    throw new Exception();
                }
                if (uproszczone_wyszukiwanie.IsChecked == true)
                {
                    start = int.Parse(uproszczone_wyszukiwanie_TextBox.Text);
                    if (start < 0 || start >= szerokosc * wysokosc)
                    {
                        throw new Exception();
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Wystąpił błąd, możliwości to:\n- podano nieprawidłowe progi punktowe dla tej gry\n- podano zbyt małą liczbę kroków,\n- liczba kroków jest nieparzysta, czyli gra jest nierozwiązywalna\n- liczba kroków jest większa niż liczba pól,\n- warość pola uproszczone wyszukiwanie jest błędna (<0 lub >=" + (szerokosc * wysokosc) + ").");
                znajdz_rozwiazanie.Content = "Znajdź rozwiązanie";
                return;
            }

            int iterator = 0;

            int[] dane_z_tabeli = dataGrid2D.ItemsSource2D.Cast <int>().ToArray <int>();//załadowanie danych z tabeli do tablicy intów
            if (dane_z_tabeli[start] < 0 && uproszczone_wyszukiwanie.IsChecked == true)
            {
                MessageBox.Show("Punkt startowy w uproszczonym wyszukiwaniu musi być przechodnim polem.");
                return;
            }
            dane = new int[wysokosc, szerokosc];
            for (int j = 0; j < wysokosc; j++)      //wierszem
            {
                for (int i = 0; i < szerokosc; i++) //kolumna
                {
                    dane[j, i] = dane_z_tabeli[iterator++];
                }
            }

            if (!PlEngine.IsInitialized)
            {
                String   sciezka = @"..\..\..\ROGO.pl";  //ścieżka do pliku ROGO.pl
                String[] param   = { "-q -f", sciezka }; //parametry uruchomieniowe prologa
                PlEngine.Initialize(param);              //uruchomienie prologa z wcześniej ustalonymi parametrami
            }
            if (PlEngine.IsInitialized)
            {
                String lista_wartosci = tablica_prologowa(dane_z_tabeli);//prologowa lista zawierająca wartości wszystkich pól
                String zapytanie      = "";
                if (uproszczone_wyszukiwanie.IsChecked == true)
                {
                    zapytanie = "szukaj_po_glowie(" + szerokosc + "," + wysokosc + "," + liczba_krokow + "," + dobry_wynik + "," + najlepszy_wynik + "," + lista_wartosci + "," + start + ",Lista).";
                }
                else
                {
                    zapytanie = "szukaj(" + szerokosc + "," + wysokosc + "," + liczba_krokow + "," + dobry_wynik + "," + najlepszy_wynik + "," + lista_wartosci + ",Lista).";
                }
                List <rozwiazanie> cos = new List <rozwiazanie>();//jedynie do testów
                try
                {
                    using (var q = new PlQuery(zapytanie))
                    {
                        foreach (PlQueryVariables v in q.SolutionVariables)
                        {
                            string      test = v["Lista"].ToString();
                            rozwiazanie znalezione_rozwiazanie = new rozwiazanie(test, dane_z_tabeli);
                            cos.Add(znalezione_rozwiazanie);
                        }
                    }
                }
                catch (PlException E)
                {
                    if (E.Message == "Execution Aborted")//poprawne zakończenie - wywoływane z ROGO.pl
                    {
                        cos = cos.OrderBy(x => x.wynik).ThenBy(x => x.sciezka).ToList();
                        znalezione_rozwiazania.ItemsSource = cos;
                        MessageBox.Show("Zakończono wyszukiwanie.");
                    }
                    else
                    {
                        MessageBox.Show(E.Message);
                    }
                }
                //PlEngine.PlCleanup();//moze powodowac bledy podczas szybkiego uruchomienia kolejnego zapytania
            }
            znalezione_rozwiazania.IsEnabled = true;
            wyswietl_rozwiazanie.IsEnabled   = true;
        }
 public bool ExecuteClause(string clause)
 {
     PlEngine.PlThreadAttachEngine();
     return(PlQuery.PlCall(clause));
 }
 public void t_prolog_exception()
 {
     Assert.IsTrue(PlQuery.PlCall("assert( (test_throw :- throw(error)) )"));
     PlQuery.PlCall("test_throw");
 }
示例#30
0
 public void LoadEngine()
 {
     PlQuery.PlCall("consult('" + "engine.pl" + "')");
 }
示例#31
0
		//operator char *(void);
        /// <inheritdoc />
        /// <summary>
        /// The exception is translated into a message as produced by print_message/2. The character data is stored in a ring.
        /// </summary>
        /// <returns></returns>
		override public string ToString()
		{
            if (_messagePl != null) return GetType() + ": " + _messagePl;

            if (!PlEngine.IsInitialized)
                return "A PlException was thrown but it can't formatted because PlEngine is not Initialized.";

			string strRet = "[ERROR: Failed to generate message.  Internal error]\n";
            if (libpl.NoToString) return "[ERROR: Failed to generate message.  NoToString presently]\n";
            using (PlFrame fr = new PlFrame())
            {

#if USE_PRINT_MESSAGE
				PlTermV av = new PlTermV(2);

                av[0] = PlTerm.PlCompound("print_message", new PlTermV(new PlTerm("error"), new PlTerm( _exTerm.TermRef)));
				PlQuery q = new PlQuery("$write_on_string", av);
				if ( q.NextSolution() )
					strRet = (string)av[1];
				q.Free();
#else
                PlTermV av = new PlTermV(2);
                av[0] = new PlTerm(_exTerm.TermRef);
                PlQuery q = new PlQuery("$messages", "message_to_string", av);
                if (q.NextSolution())
                    strRet = av[1].ToString();
                //q.Free();
                return strRet;
                q.Dispose();
#endif
            }
			return strRet;
		}