Prolog读取输入没有完全停止

时间:2013-01-02 14:46:24

标签: command prolog

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

然而问题是你总是必须完全停止命令,即 “跳转(室)”。而不是“goto(room)。这不是非常用户友好。

我有一个谓词,它读取命令然后执行输入。如果没有,我怎么能自动添加句号(如果只有一个输入应该执行)?

提前致谢!

此致

沃尔克

1 个答案:

答案 0 :(得分:1)

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

解决方案是自己解析输入(检查primitive char ioread utilitiesio in general(您可能只需要读取实用程序))然后{{3它是一个术语。

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

另一方面,我个人不认为必须跳过全站,如果他们不得不输入prolog术语,那将会更加用户友好。