tomaszmakaski
Programmer
Hi I have problem. I have written simple prolog app and it works ok, but I don't know how place a dialog box in the same place. App ask questions in dialog and still is moving how to force it to stays in the same place?
I use SWI Prolog Editor 4.06c. Thanks for any help or advice.
This is the code:
exe:- make_dialog(D, 'glowny_dialog'),
send(D, background, grey),
send(D, open).
dialog('glowny_dialog',
[ object := Glowny_dialog,
parts :=
[ Glowny_dialog :=
dialog('Zwierz?to-zgadywasz'),
Opis := label(name,'Pomy?l o dowolnym zwierz?ciu, ja zadam Ci kilka pyta? i odgadne jakie to zwierze ', font(helvetica,bold,12)),
Wyjscie := button(wyjscie),
Rozpocznij := button(rozpocznij),
Wnioski := list_browser(@default, 80, 5)
],
modifications :=
[
Wnioski := [ name := 'Wniosek',show_label := @on],
Rozpocznij := [ reference := point(0, 15) ] ,
Wyjscie := [ reference := point(0, 15) ]
],
layout :=
[
% area(Opis,area(15,8,364,24)),
% area(Wnioski,area(15,40,500,22)),
% area(Rozpocznij,area(15,104,400,24)),
% area(Wyjscie,area(15,104,199,22))
below(Wnioski,Opis),
below(Wyjscie, Wnioski),
below(Rozpocznij,Wnioski),
right(Wyjscie, Rozpocznij)
],
behaviour :=
[
Rozpocznij := [ message := and(message(@prolog,
'rozpocznij',
Wnioski
)
)
],
Wyjscie := [ message := message(@prolog,
'wyjscie',
Glowny_dialog)
]
]
]).
wyjscie(A):-
send(A, destroy).
rozpocznij(Okno) :- wniosek(W),
string_concat('Zwierz? o którym pomy?la?e? to: ',W,
Wynik),
send_list(Okno, append, [Wynik]),
retractall(prawda(_)),
retractall(nieprawda(_)).
:- dynamic prawda/1, nieprawda/1.
wniosek('Pingwin'):- gatunek(ptakNielot),warunek(czarnoBialego).
wniosek('Rybka ?yj?ca w rzece w ver. 0.1 Mog? powiedzie? Ci tylko tyle '):- gatunek(rybaRzeka).
wniosek('Tygrys'):-gatunek(duzyKot),warunek(futroPrazki).
wniosek('Kotek'):-gatunek(malyKot),warunek(mruczy).
wniosek('Szczur'):- gatunek(gryzon),warunek(ogonKotkiCienki),warunek(kanalach).
wniosek('Wiewiórka'):- gatunek(gryzon),warunek(malych),warunek(rudego),warunek(ogonDlugiPuszysty).
wniosek('Pies'):- gatunek(ssak),warunek(drapieznikiem),warunek(sredniej),warunek(szczekac).
wniosek('Swinia'):-gatunek(ssak),warunek(czteryLapy),warunek(chodowlane),warunek(rozowego),warunek(chrumkac).
wniosek('Krowa'):-gatunek(ssak),warunek(czteryLapy),warunek(chodowlane),warunek(laty),warunek(mleko).
wniosek('Ko?'):-gatunek(ssak),warunek(czteryLapy),warunek(chodowlane),warunek(jezdzic),warunek(woz).
wniosek('Kura'):-warunek(cieplokrwiste),warunek(piorami),warunek(ziemi),warunek(chodowlane),warunek(jaja).
wniosek('Kogut'):-warunek(cieplokrwiste),warunek(piorami),warunek(ziemi),warunek(chodowlane),warunek(pieje).
gatunek(ssak):- warunek(cieplokrwiste),warunek(sierscFutro),warunek(ziemi);warunek(plywac).
gatunek(latajacyPtak):- warunek(cieplokrwiste),warunek(piorami),warunek(drzewach),warunek(latac).
gatunek(ptakNielot):- warunek(cieplokrwiste),warunek(piorami),warunek(ziemi),warunek(plywac),warunek(sredniej).
gatunek(rybaOcean):- warunek(zimnokrwiste),warunek(loskami),warunek(morzu),warunek(plywac).
gatunek(rybaRzeka):- warunek(zimnokrwiste),warunek(loskami),warunek(rzece),warunek(plywac).
gatunek(miesozerca):- warunek(miesem).
gatunek(roslinozerca):-warunek(roslinami).
gatunek(kotowaty):- warunek(cieplokrwiste),warunek(szybkie),warunek(czteryLapy).
gatunek(malyKot):- gatunek(kotowaty),warunek(drapieznikiem),warunek(male).
gatunek(duzyKot):- gatunek(kotowaty),warunek(drapieznikiem),warunek(czlowieka),warunek(duze).
gatunek(gryzon):- gatunek(ssak),warunek(drapieznikiem),warunek(szkodnikiem).
wniosek('Nie mam zielonego poj?cia o jakim zwierz?ciu pomysla?e?'):- nl, !.
warunek(szybkie):-czy('Jest bardzo szybkie i zwinne').
warunek(czteryLapy):-czy('Posiada 4 ?apy').
warunek(czlowieka):-czy('Czy mo?e zje?? cz?owieka').
warunek(futroPrazki):-czy('Jego futro jest brozowe w czarne pr??ki').
warunek(mruczy):-czy('Przez wi?kszo?? dnia nic nie robi, wyleguje sie na s?o?cu, mruczy i oblizuje ?apy').
warunek(szczekac):-czy('Potrafi szczeka?').
warunek(chodowlane):-czy('Jest zwierz?ciem chodowlanym').
warunek(rozowego):-czy('Czy jest koloru ró?owego').
warunek(chrumkac):-czy('Potrafi chrumka?').
warunek(laty):-czy('Sier?? poktryta jest bia?o czarnymi ?atami').
warunek(mleko):-czy('Daje mleko').
warunek(jezdzic):-czy('Mo?na na nim je?dzi?').
warunek(woz):-czy('Ma si?? aby ci?gn?? wóz').
warunek(jaja):-czy('Znosi jaja').
warunek(pieje):-czy('Pieje o ?wicie').
warunek(cieplokrwiste):-czy('Czy jest to zwierze cieplokrwiste').
warunek(zimnokrwiste):-czy('Czy jest to zwierze zimnokrwiste').
warunek(czarnoBialego):-czy('Czy jest czarno-bia?ego koloru').
warunek(rudego):-czy('Czy jest rudego koloru').
warunek(rude):-czy('Czy jest rude').
warunek(siwe):-czy('Czy jest siwe').
warunek(kanalach):-czy('Czy ?yje w kana?ach').
warunek(dzungli):-czy('Czy ?yje w d?ungli').
warunek(drzewach):-czy('Czy ?yje na drzewach').
warunek(ziemi):-czy('Czy porusza si? po ziemi').
warunek(morzu):-czy('Czy ?yje w morzu').
warunek(rzece):-czy('Czy zyje w rzece').
warunek(miesem):-czy('Czy ?ywi si? mi?sem').
warunek(roslinami):-czy('Czy ?ywi si? ro?linami').
warunek(konczynach):-czy('Czy porusza si? na ko?czynach').
warunek(plywac):-czy('Potrafi p?ywa?').
warunek(latac):-czy('Potrafi lata?').
warunek(malych):-czy('Jest ma?ych rozmiarów').
warunek(sredniej):-czy('Jest ?redniej wielko?ci').
warunek(male):-czy('Jest male').
warunek(duze):-czy('Jest to du?e zwierze').
warunek(sierscFutro):-czy('Posiada sier?? lub futro').
warunek(piorami):-czy('Jest pokryte piórami').
warunek(loskami):-czy('Jest pokryte ?óskami').
warunek(drapieznikiem):-czy('Jest drapie?nikiem').
warunek(ogonDlugiPuszysty):-czy('Ogon jest d?ugi i puszysty').
warunek(ogonKotkiCienki):-czy('Ogon jest krótki i cienki').
warunek(ogonDlugiPuszysty):-czy('Ogon jest d?ugi i puszysty').
warunek(ogon):-czy('Posiada ogon').
warunek(szkodnikiem):-czy('Jest szkodnikiem').
czy(X) :- prawda(X), !.
czy(X) :- nieprawda(X), !, fail.
czy(X) :-
string_concat('',X, Temp),
string_concat(Temp,' ?',Wynik),
% new(D, dialog('Pytanie')),
send(@display,inform,D),
send(D, append, label(name,Wynik,font(helvetica,roman,12))),
send(D, append,
button(tak, message(D, return,
'tak'))),
send(D, append,
button(nie, message(D, return, 'nie'))),
send(D, default_button, tak), % Ok: default button
get(D, confirm, Answer), % This blocks!
send(D, destroy),
Odp = Answer,
do_bazy(X,Odp).
do_bazy(X,Odp):- Odp == tak, assert(prawda(X)).
do_bazy(X,Odp):- Odp == nie, assert(nieprawda(X)), !, fail.
I use SWI Prolog Editor 4.06c. Thanks for any help or advice.
This is the code:
exe:- make_dialog(D, 'glowny_dialog'),
send(D, background, grey),
send(D, open).
dialog('glowny_dialog',
[ object := Glowny_dialog,
parts :=
[ Glowny_dialog :=
dialog('Zwierz?to-zgadywasz'),
Opis := label(name,'Pomy?l o dowolnym zwierz?ciu, ja zadam Ci kilka pyta? i odgadne jakie to zwierze ', font(helvetica,bold,12)),
Wyjscie := button(wyjscie),
Rozpocznij := button(rozpocznij),
Wnioski := list_browser(@default, 80, 5)
],
modifications :=
[
Wnioski := [ name := 'Wniosek',show_label := @on],
Rozpocznij := [ reference := point(0, 15) ] ,
Wyjscie := [ reference := point(0, 15) ]
],
layout :=
[
% area(Opis,area(15,8,364,24)),
% area(Wnioski,area(15,40,500,22)),
% area(Rozpocznij,area(15,104,400,24)),
% area(Wyjscie,area(15,104,199,22))
below(Wnioski,Opis),
below(Wyjscie, Wnioski),
below(Rozpocznij,Wnioski),
right(Wyjscie, Rozpocznij)
],
behaviour :=
[
Rozpocznij := [ message := and(message(@prolog,
'rozpocznij',
Wnioski
)
)
],
Wyjscie := [ message := message(@prolog,
'wyjscie',
Glowny_dialog)
]
]
]).
wyjscie(A):-
send(A, destroy).
rozpocznij(Okno) :- wniosek(W),
string_concat('Zwierz? o którym pomy?la?e? to: ',W,
Wynik),
send_list(Okno, append, [Wynik]),
retractall(prawda(_)),
retractall(nieprawda(_)).
:- dynamic prawda/1, nieprawda/1.
wniosek('Pingwin'):- gatunek(ptakNielot),warunek(czarnoBialego).
wniosek('Rybka ?yj?ca w rzece w ver. 0.1 Mog? powiedzie? Ci tylko tyle '):- gatunek(rybaRzeka).
wniosek('Tygrys'):-gatunek(duzyKot),warunek(futroPrazki).
wniosek('Kotek'):-gatunek(malyKot),warunek(mruczy).
wniosek('Szczur'):- gatunek(gryzon),warunek(ogonKotkiCienki),warunek(kanalach).
wniosek('Wiewiórka'):- gatunek(gryzon),warunek(malych),warunek(rudego),warunek(ogonDlugiPuszysty).
wniosek('Pies'):- gatunek(ssak),warunek(drapieznikiem),warunek(sredniej),warunek(szczekac).
wniosek('Swinia'):-gatunek(ssak),warunek(czteryLapy),warunek(chodowlane),warunek(rozowego),warunek(chrumkac).
wniosek('Krowa'):-gatunek(ssak),warunek(czteryLapy),warunek(chodowlane),warunek(laty),warunek(mleko).
wniosek('Ko?'):-gatunek(ssak),warunek(czteryLapy),warunek(chodowlane),warunek(jezdzic),warunek(woz).
wniosek('Kura'):-warunek(cieplokrwiste),warunek(piorami),warunek(ziemi),warunek(chodowlane),warunek(jaja).
wniosek('Kogut'):-warunek(cieplokrwiste),warunek(piorami),warunek(ziemi),warunek(chodowlane),warunek(pieje).
gatunek(ssak):- warunek(cieplokrwiste),warunek(sierscFutro),warunek(ziemi);warunek(plywac).
gatunek(latajacyPtak):- warunek(cieplokrwiste),warunek(piorami),warunek(drzewach),warunek(latac).
gatunek(ptakNielot):- warunek(cieplokrwiste),warunek(piorami),warunek(ziemi),warunek(plywac),warunek(sredniej).
gatunek(rybaOcean):- warunek(zimnokrwiste),warunek(loskami),warunek(morzu),warunek(plywac).
gatunek(rybaRzeka):- warunek(zimnokrwiste),warunek(loskami),warunek(rzece),warunek(plywac).
gatunek(miesozerca):- warunek(miesem).
gatunek(roslinozerca):-warunek(roslinami).
gatunek(kotowaty):- warunek(cieplokrwiste),warunek(szybkie),warunek(czteryLapy).
gatunek(malyKot):- gatunek(kotowaty),warunek(drapieznikiem),warunek(male).
gatunek(duzyKot):- gatunek(kotowaty),warunek(drapieznikiem),warunek(czlowieka),warunek(duze).
gatunek(gryzon):- gatunek(ssak),warunek(drapieznikiem),warunek(szkodnikiem).
wniosek('Nie mam zielonego poj?cia o jakim zwierz?ciu pomysla?e?'):- nl, !.
warunek(szybkie):-czy('Jest bardzo szybkie i zwinne').
warunek(czteryLapy):-czy('Posiada 4 ?apy').
warunek(czlowieka):-czy('Czy mo?e zje?? cz?owieka').
warunek(futroPrazki):-czy('Jego futro jest brozowe w czarne pr??ki').
warunek(mruczy):-czy('Przez wi?kszo?? dnia nic nie robi, wyleguje sie na s?o?cu, mruczy i oblizuje ?apy').
warunek(szczekac):-czy('Potrafi szczeka?').
warunek(chodowlane):-czy('Jest zwierz?ciem chodowlanym').
warunek(rozowego):-czy('Czy jest koloru ró?owego').
warunek(chrumkac):-czy('Potrafi chrumka?').
warunek(laty):-czy('Sier?? poktryta jest bia?o czarnymi ?atami').
warunek(mleko):-czy('Daje mleko').
warunek(jezdzic):-czy('Mo?na na nim je?dzi?').
warunek(woz):-czy('Ma si?? aby ci?gn?? wóz').
warunek(jaja):-czy('Znosi jaja').
warunek(pieje):-czy('Pieje o ?wicie').
warunek(cieplokrwiste):-czy('Czy jest to zwierze cieplokrwiste').
warunek(zimnokrwiste):-czy('Czy jest to zwierze zimnokrwiste').
warunek(czarnoBialego):-czy('Czy jest czarno-bia?ego koloru').
warunek(rudego):-czy('Czy jest rudego koloru').
warunek(rude):-czy('Czy jest rude').
warunek(siwe):-czy('Czy jest siwe').
warunek(kanalach):-czy('Czy ?yje w kana?ach').
warunek(dzungli):-czy('Czy ?yje w d?ungli').
warunek(drzewach):-czy('Czy ?yje na drzewach').
warunek(ziemi):-czy('Czy porusza si? po ziemi').
warunek(morzu):-czy('Czy ?yje w morzu').
warunek(rzece):-czy('Czy zyje w rzece').
warunek(miesem):-czy('Czy ?ywi si? mi?sem').
warunek(roslinami):-czy('Czy ?ywi si? ro?linami').
warunek(konczynach):-czy('Czy porusza si? na ko?czynach').
warunek(plywac):-czy('Potrafi p?ywa?').
warunek(latac):-czy('Potrafi lata?').
warunek(malych):-czy('Jest ma?ych rozmiarów').
warunek(sredniej):-czy('Jest ?redniej wielko?ci').
warunek(male):-czy('Jest male').
warunek(duze):-czy('Jest to du?e zwierze').
warunek(sierscFutro):-czy('Posiada sier?? lub futro').
warunek(piorami):-czy('Jest pokryte piórami').
warunek(loskami):-czy('Jest pokryte ?óskami').
warunek(drapieznikiem):-czy('Jest drapie?nikiem').
warunek(ogonDlugiPuszysty):-czy('Ogon jest d?ugi i puszysty').
warunek(ogonKotkiCienki):-czy('Ogon jest krótki i cienki').
warunek(ogonDlugiPuszysty):-czy('Ogon jest d?ugi i puszysty').
warunek(ogon):-czy('Posiada ogon').
warunek(szkodnikiem):-czy('Jest szkodnikiem').
czy(X) :- prawda(X), !.
czy(X) :- nieprawda(X), !, fail.
czy(X) :-
string_concat('',X, Temp),
string_concat(Temp,' ?',Wynik),
% new(D, dialog('Pytanie')),
send(@display,inform,D),
send(D, append, label(name,Wynik,font(helvetica,roman,12))),
send(D, append,
button(tak, message(D, return,
'tak'))),
send(D, append,
button(nie, message(D, return, 'nie'))),
send(D, default_button, tak), % Ok: default button
get(D, confirm, Answer), % This blocks!
send(D, destroy),
Odp = Answer,
do_bazy(X,Odp).
do_bazy(X,Odp):- Odp == tak, assert(prawda(X)).
do_bazy(X,Odp):- Odp == nie, assert(nieprawda(X)), !, fail.