public bool Assert(string clause) { PlEngine.PlThreadAttachEngine(); return(PlQuery.PlCall("assert(" + clause + ")")); }
public void AssertFact(string prologFact) { PlQuery.PlCall("assert(" + prologFact + ")"); SaveLine(prologFact + "."); }
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."; } }
private bool ModuleCall(string s, params PlTerm[] terms) { return(PlQuery.PlCall(ClientModule, ClientPrefix + s, ToPLCSV1(ThisClientTerm, terms))); }
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; } } }
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; } } }
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)"); }
private void build_pred() { Assert.IsTrue(PlQuery.PlCall("assert( (test(comp(X,Y)) :- member(Z,[1,2,3]), atomic_list_concat([X,Z],Y) ) )")); }
public void Pl_query_version() { long v = PlQuery.Query(PlQuerySwitch.Version); Assert.AreEqual(60605, v, "SWI-Prolog version number "); }
public void PlCallQueryTooMannyVariableException() { PlQuery.PlCallQuery("member(A, X)"); }
public void PlCallQueryNoVariableException() { PlQuery.PlCallQuery("member(a, [a,b,c])"); }
public void PlCallNoVariableFail() { bool result = PlQuery.PlCall("is_list(123)"); Assert.IsFalse(result); }
public void PlCallNoVariableTrue() { bool result = PlQuery.PlCall("is_list([a,b,c])"); Assert.IsTrue(result); }
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)"); }
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()); * } */ }
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; } }
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(); } }
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; } }
//[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!"); }
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; }
private bool ModuleCall0(string s, PlTermV termV) { return(PlQuery.PlCall(ClientModule, ClientPrefix + s, termV)); }
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; } } } } }
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(); } }
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"); }
public void LoadEngine() { PlQuery.PlCall("consult('" + "engine.pl" + "')"); }
//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; }