我正试图在Inform 7中制作一款游戏,但遇到了一个大问题,谷歌搜索显然找不到答案。
我使用了一个"if"参数来根据玩家所在的房间来改变某些情况。它没有把我写的东西看作"if"自变量,而是假设"if the player"是一个自己的实体。
这是错误消息:
你写了"如果球员在接待处",但也写了"球员在"角桌":这似乎是在说同一个物体(如果球员)必须在两个不同的地方(接待处和角落表)。这看起来很矛盾。
这是我在两个地方的代码:
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.
所以,呃。。。有人能帮我吗?
您发布的代码有几个问题:
- 如果短语不能断章取义。当考虑if短语时,必须为编写规则
- 相反,你不能在上下文中使用理解短语。更具体地说,
if ...: understand "..." as ...
是不可能的。理解短语必须始终是独立的 - if短语应该以冒号结尾,而不是以分号结尾
- "西北"本身并不是一种行动;"向西北走"就是
你显然想要这个:
Instead of exiting when the location is the Corner Table:
try going northwest.
这会将退出操作(包括命令"离开"one_answers"退出")重定向到该特定房间中的西北方向操作。
对于第二个if短语,首先,如果你有一个名为"Janitor's Key"的对象,游戏已经将"Key"理解为指代这个对象,除非你专门为该对象命名。其次,为什么游戏只在一个位置识别"钥匙"?内置的范围已经确保你不能引用与玩家不在同一个房间里的东西。
因此,如果对象是私人命名的,并且有理由只在一个位置引用密钥,那么代码是:
Understand "key" as the Janitor's Key when the location is the Reception.
但是,正如所说,只有在非常特定的情况下,这才是必要的,而且很可能最好让标准库来处理它,并将其完全排除在外。