'如果'涉及玩家在Inform 7中的争论导致矛盾

时间:2013-12-06 11:49:41

标签: inform7

我正在尝试在Inform 7中制作游戏并遇到一个重大问题,谷歌搜索显然无法找到答案。

我正在使用'if'参数根据玩家所处的空间来改变某些情况。而不是看到我所写的“if”参数,它假设'如果玩家'是一个本身的实体。

这是错误消息:

  

你写了'如果玩家在接收',但也'如果玩家在   角落表':这似乎是说同一个对象(如果   玩家)必须在两个不同的地方(接待和角落)   表)。这看起来很矛盾。

这是我在两个地方的代码:

If the player is in the Corner Table;
    Understand the command "leave" or "exit" as something new.
    Understand "leave" or "exit" as northwest.

If the player is in Reception;
    Understand "key" as the Janitor's Key.

所以,呃......任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您发布的代码存在以下问题:

  • 你不能断章取义。当考虑if短语时,您必须为编写规则。
  • 相反,您不能在上下文中使用理解短语。更具体地说,if ...: understand "..." as ...是不可能的。理解短语必须始终是独立的。
  • if短语应以冒号结尾,而不是分号。
  • “西北”本身并不是一种行动; “向西北方向”是。

你显然想要这个:

Instead of exiting when the location is the Corner Table:
    try going northwest.

这会将退出动作(包括命令“离开”和“退出”)重定向到该特定房间的西北行动。

对于第二个if短语,首先如果你有一个名为“Janitor's Key”的对象,游戏已经将“key”理解为引用这个对象,除非你专门制作了对象privately-named。其次,为什么游戏只在一个位置识别“关键”?内置范围已确保您不能引用与播放器不在同一房间内的内容。

因此,如果对象是私有命名的,并且有一个原因,为什么密钥只应在一个位置被引用,那么代码就是:

Understand "key" as the Janitor's Key when the location is the Reception.

但是,如上所述,在非常特殊的情况下,这只是 是必要的,而且很可能最好让标准库处理它并完全不用它。