Prolog获得动态的事实价值

时间:2013-07-15 07:06:41

标签: prolog

在学习Prolog时,我正在编写一个基于文本的游戏,这是其中的一部分:

NewHealth is Health - Damage,
retract(stat(Target, health, Health)),
assert(stat(Target, health, NewHealth)),

我收到一个关于静态程序的错误,但是一个简单的搜索修复它,在运行游戏时我会快速说dynamic stat/3。然而,在那之后,我在声明Health变量的文件中进一步出错:

stat(Target, health, Health),

我把问题缩小到这个(prolog控制台):

| ?- assert(test(a)).
yes
| ?- listing
test(a).
yes
| ?- dynamic test/1
yes
| ?- listing
yes

声明为动态后,它不再位于静态数据库中。但是通过谷歌搜索,找不到与我的问题相同的案例。我只需要查询和收回/断言一个数据库。

1 个答案:

答案 0 :(得分:1)

dynamic / 1是一个指令。使用此语法

将其放在文件顶部附近
:- dynamic stat/3.