If statement Prolog检查是否
我正在SWI 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')
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')。
?请看这里: