1

Prolog を学習しながら、テキストベースのゲームを書いています。これはその一部です。

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

静的プロシージャに関するエラーが発生しましたが、簡単な検索で修正されました。ゲームを実行しているときに、すぐにdynamic stat/3. ただし、その後、Health 変数を宣言するファイルのさらに上にエラーが表示されます。

stat(Target, health, Health),

問題をこれに絞り込みました(プロローグコンソール):

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

動的と宣言された後、静的データベースにはもうありません。しかし、グーグル検索では、私と同じ問題を抱えているケースを見つけることができませんでした. 単一のデータベースを照会して撤回/アサートするだけです。

4

1 に答える 1

1

dynamic /1 はディレクティブです。この構文で、ファイルの先頭近くに配置します

:- dynamic stat/3.
于 2013-07-15T08:39:27.887 に答える