我目前正在用 SWI-Prolog 编写一个基于文本的小型冒险游戏。因此,用户将不得不给出诸如“goto(room)”或“goto room”之类的命令。
然而问题是您总是必须以句号结束命令,即“goto(room)”。而不是“goto(room)”。这不是很人性化。
我有一个谓词读取命令然后执行输入。如果没有句号,我如何自动添加句号(如果已经有一个,则应该执行输入)?
提前致谢!
问候,
沃尔克
显然您正在使用read/1
或一些变体;这应该用于阅读有效的序言术语(这就是您需要句号的原因)。
解决方案是自己解析输入(检查原语 char io、读取实用程序和一般的 io (尽管您可能只需要读取实用程序)),然后将其转换为术语。
此外,您可以使用 DCG 创建小型自然语言并使用;例如,用户可以只写goto room
而不是goto(room)
.
另一方面,我个人认为,如果他们无论如何都必须输入序言词,则不必跳过句号会更加用户友好。