1

我目前正在用 SWI-Prolog 编写一个基于文本的小型冒险游戏。因此,用户将不得不给出诸如“goto(room)”或“goto room”之类的命令。

然而问题是您总是必须以句号结束命令,即“goto(room)”。而不是“goto(room)”。这不是很人性化。

我有一个谓词读取命令然后执行输入。如果没有句号,我如何自动添加句号(如果已经有一个,则应该执行输入)?

提前致谢!

问候,

沃尔克

4

1 回答 1

1

显然您正在使用read/1或一些变体;这应该用于阅读有效的序言术语(这就是您需要句号的原因)。

解决方案是自己解析输入(检查原语 char io读取实用程序一般的 io (尽管您可能只需要读取实用程序)),然后其转换为术语。

此外,您可以使用 DCG 创建小型自然语言并使用;例如,用户可以只写goto room而不是goto(room).

另一方面,我个人认为,如果他们无论如何都必须输入序言词,则不必跳过句号会更加用户友好。

于 2013-01-02T15:58:11.103 回答