gat*_*tsu 7 prolog swi-prolog prolog-toplevel
我想用Prolog写一个基于文本的小型冒险游戏(这可能是一个愚蠢的想法,但我不在这里讨论).
唯一的问题是我无法在屏幕上打印文本而不显示"true"和"false"值.
例如,如果我尝试类似的东西:
take(desk) :- write('This thing is way too heavy for me to carry!').
Run Code Online (Sandbox Code Playgroud)
where take一个地方谓词和desk我得到的名称作为输出:
?- take(desk).
This thing is way too heavy for me to carry!
true.
Run Code Online (Sandbox Code Playgroud)
我怎样才能摆脱这种"真实"或"错误"的输出?
只是提到我还尝试使用format/1一个地方谓词进行简单的文本输出以及format/2两个地方谓词(当我想输出一个变量的名称时),但它给出了完全相同的问题.
我也看到了这个答案,但首先它不够详细(至少不是像我这样的人),其次,我希望内心深处有更简单的方式来做到这一点.
最后,我正在使用SWI-Prolog.
谢谢.
lur*_*ker 11
一种简单的方法是创建自己的一个小REPL(读取,评估,打印循环).像这样的东西:
game :-
repeat,
write('> '),
read(X),
call(X),
fail.
Run Code Online (Sandbox Code Playgroud)
这只会提示并执行您在提示符下输入的内容.结合你的take事实(和我添加的另一个例子):
take(desk) :- write('This thing is way too heavy for me to carry!'), nl.
take(chair) :- write('This is easier to carry.'), nl.
Run Code Online (Sandbox Code Playgroud)
你会得到:
?- game.
> take(desk).
This thing is way too heavy for me to carry!
> take(chair).
This is easier to carry.
>
Run Code Online (Sandbox Code Playgroud)
你没有得到true或者false因为在game你以某种方式退出循环之前目标无法解决.你可以做一个补充检查quit或bye或任何退出game循环.也可以使用Ctrl-C或Ctrl-D来中止循环.您可能需要添加一些其他"功能",以使其适合您的需求或喜好.
| 归档时间: |
|
| 查看次数: |
3558 次 |
| 最近记录: |