1

我正在 SWI-Prolog 上创建一个文本冒险游戏,我想包含(某种)对话框。

到目前为止,我所拥有的是:

dialog1(1):- nl,write('blah blah'),nl
             write('a: this is answer a'),nl,
             write('b: this is answer b'),nl.

a:- write('respond to answer a'),nl.
b:- write('respond to answer b'),nl. 

这几乎是第一个对话。现在我想创建一个类似于第一个对话框的第二个对话框。

dialog1(2):- nl,write('blah blah'),nl,
             write('a: this is answer a'),nl,
             write('b: this is answer b'),nl.

a:- write('respond to answer a'),nl.
b:- write('respond to answer b'),nl. 

如何检查对话框是第一个还是第二个?我想这样做是因为当用户键入时a.,我需要显示正确的答案 a。

我以为我可以使用类似的东西

a(1):- write('respond to answer a'),nl.
b(1):- write('respond to answer b'),nl. 

/* and on the second dialog*/
a(2):- write('respond to answer a'),nl.
b(2):- write('respond to answer b'),nl. 

但是,如果用户在对话框 2 中并键入 a(1),则会出现第一个答案。

4

1 回答 1

0

您可以将->含义用作一种 if 语句:

?- true -> write('t') ; write('f').
t
true.
?- false -> write('t') ; write('f').
f
true.

您可以apropos(assert).了解有关assert(statement). 有了assert你可以添加一个新statements的数据库,如assert(a(1):- write('...')). 用来retract忘记一个陈述。

于 2013-11-06T21:53:24.590 回答