If statement Prolog检查是否

If statement Prolog检查是否,if-statement,prolog,If Statement,Prolog,我正在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')

我正在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),第一个答案将出现。

您可以使用
->
含义作为if语句:

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

您可以
apropos(assert)。
有关
assert(statement)
的信息。使用
assert
可以向数据库添加新的
语句,如
assert(a(1):-write(“…”)
。使用
retract
来忘记一条语句。

比如我怎么能在代码中包含它?对话框(1)==true->write('t');写('f')?诸如此类的事?我很确定我只是没有得到这个问题。。->是if语句,但您可能需要其他内容。是否要创建如下全局状态:
?-dialog(1)。
?-a.
a现在显示对话框1的答案,而不是对话框2的答案。是的。这就是我想做的。在
对话框(1)
上,使用
a
显示
对话框(1)
的答案;在
对话框2上,使用
a
显示
对话框(2)
的答案。有关
断言(语句)
的信息,请使用
apropos(assert)。
。有了它,您可以向数据库添加一个新的
语句
,如
assert(a(1):-write(“…”)
。使用
retract
忘记语句。我可以这样使用assert吗?比如说给我几个命令<代码>断言(a(1)):-write('aa'),nl,write('qweq')。
?请看这里: