gpt4 book ai didi

prolog - 如何关闭 Prolog 中的 "true"和 "false"输出?

转载 作者:行者123 更新时间:2023-12-04 10:50:58 25 4
gpt4 key购买 nike

我想使用 Prolog 编写一个基于文本的小型冒险游戏(这可能是一个愚蠢的想法,但我不是来讨论这个的)。

唯一的问题是,如果不显示“真”和“假”值,我就无法在屏幕上打印文本。

例如,如果我尝试以下操作:

take(desk) :- write('This thing is way too heavy for me to carry!').

哪里 take是一个位置谓词和 desk我作为输出得到的名字:
?- take(desk).
This thing is way too heavy for me to carry!
true.

如何摆脱这种“真”或“假”输出?

顺便提一下,我也尝试过 format/1用于简单文本输出的一处谓词以及 format/2两位谓词(当我想输出变量的名称时)但它给出了完全相同的问题。

我也看过 this answer但首先它不够详细(至少对于像我这样的人来说不是),其次,我希望在内心深处有一种更简单的方法来做到这一点。

最后,我正在使用 SWI-Prolog。

谢谢你。

最佳答案

一个简单的方法是创建一个你自己的 REPL(读取、评估、打印循环)。像这样的东西:

game :-
repeat,
write('> '),
read(X),
call(X),
fail.

这只会提示并执行您在提示符下输入的任何内容。连同您的 take事实(以及我添加的另一个示例):
take(desk) :- write('This thing is way too heavy for me to carry!'), nl.
take(chair) :- write('This is easier to carry.'), nl.

你会得到:
?- game.
> take(desk).
This thing is way too heavy for me to carry!
> take(chair).
This is easier to carry.
>

你没有得到 truefalse因为 game在您以某种方式退出循环之前,目标不会解决。您可以为 quit 添加检查或 bye或其他退出 game环形。也可以使用 Ctrl-C 或 Ctrl-D 来中止循环。您可能需要添加一些其他“功能”以使其满足您的需求或喜好。

关于prolog - 如何关闭 Prolog 中的 "true"和 "false"输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24367985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com