6

这是一个代码片段,显示了我当前在源代码中的内容:

A morph is a kind of thing.
A morph has some text called animal name.
A serum is a kind of thing.

Revelation relates one serum to one morph.  The verb to reveal (he reveals, he revealed, it
  is revealed, he is revealing) implies the revelation relation.

在我的游戏中,我想喝血清让玩家变身为特定的动物。该动物的名称存储为称为“动物名称”的文本属性。我希望能够仅在给定血清本身的情况下引用此名称,因此我添加了变形和血清对象之间的关系。

然后我添加这个规则:

Instead of drinking a serum:
    say "You can now become a [animal name of
     morph revealed by noun].";
    now the morph revealed by the noun is held by the player;

我在这里所做的是打印这条消息,然后将相关的变形移动到玩家的库存中。我这样做是出于其他原因,但我需要这样做。

例如,给定这些断言:

Felis morph is a morph.  Cat serum is a serum.
Cat serum reveals felis morph.
The animal name of felis morph is "cat".

我希望在游戏中喝猫血清会打印“你现在可以变成猫了。”,并将猫的变体放入玩家的库存中。

我得到了两个错误,我不知道如何解决。

1) 在句子'say "You can now become a [animal name of morph by noun '对于所有者是谁或什么不够具体。

2)你写了“现在名词所显示的变形被玩家持有”:但这还不够明确,应该列出具体事物之间的明确关系,比如“现在猫在袋子里”,而不是更多难以捉摸,比如“现在猫是由一个女人抱着的”。(哪个女人?这就是麻烦。)

看来我添加的规则只是不想工作。它围绕着【名词所揭示的变形动物名称】部分和‘名词所揭示的形态’部分展开。不过,这些听起来像是完全合理的事情。名词所揭示的变形动物名称应该是一个可说的陈述。名词所揭示的形态应该是完全具体的——毕竟,我指定了启示将一种血清与一种形态联系起来。

有什么问题?或者更确切地说,我如何将显示的变体的动物名称作为文本替换,以及如何更改血清显示的变体的状态?

4

1 回答 1

5

这里的问题是,当您编写类似 的短语时the morph revealed by noun,您通过关系访问对象时,Inform 假定多个对象可以具有此属性,即使这实际上是不可能的(例如这种情况,其中显示关系是一个一对一)。

这里的解决方案是使用确定a random器从列表中实际选择一个项目。这个确定器将从它作用的列表中随机选择一个对象,但是由于这里的两个列表只能包含一个对象,所以每次都会得到相同的对象。这是一个工作示例:

Instead of drinking a serum:
    say "You can now become a [animal name of a random morph revealed by noun].";
    now a random morph revealed by the noun is held by the player;

您也可以使用确定器every,但由于它也为您提供了一个列表,因此它不适用于所有应用程序(上面示例中的第二个语句有效,但不是第一个)。

于 2018-03-19T19:38:48.530 回答