如何让一个替代函数只应用于指定的圈数

  • 本文关键字:应用于 函数 一个 inform7
  • 更新时间 :
  • 英文 :


我是通知7的新手,我想撤消之前只想应用的命令。我该怎么做?(我希望在事件发生后使用after语句来实现这一点。(

假设我们有一个关于的小故事,而不是-规则。

林恩的《激光》实验室是一个房间"拱顶在东边。如果没有就好了。"致命的激光将你与之隔开。">金库在实验室的东面。"你成功了!">
不要从实验室往东走:say"一个炽热的激光束格挡住了你的去路。">

一旦某个动作发生,我们想"禁用"这个规则。正如您所建议的,这可能发生在after-规则内部,也可能发生在任何其他类型的规则中。

我们可以添加这样的内容:

激光安全是一种变化的真实状态。表盘是实验室里的一个设备。它固定在适当的位置并打开。关闭表盘:现在激光安全是真的。关闭表盘后:说"激光冷却并无害。">

现在,我们没有在运行时真正撤销我们的规则定义,而是缩小了其定义的条件,这样它就被"解除"了,一旦lasers safe变为真,就再也不应用了。

因此,我们将替代规则重新编程为:

当激光安全为假时,不要从实验室向东:说"一个炽热的激光束格挡住了你的路。">

这个蟑螂的一个好处是,我们现在甚至可以"重做"我们的"撤消":一个简单的now lasers safe is false返回,而不是规则的旧行为。


此解决方案是通用的:您可以始终定义一个全局真值,以禁用,而不是像这样的规则。

当然,简单地写一些东西更容易,比如:

  • Instead of [action] when the [noun] is (not) [adjective]:

  • Instead of [action] when we have (not) [verb]ed the [noun]:

在我们的情况下,我们可以自由编写:

当拨盘打开时,不要从实验室向东:说"炽热的激光束格挡住了你的去路。">

或类似的东西:

当我们没有按下红色按钮时,不要从实验室向东:说"…">

参见§9.12。作为条件的行动。

最新更新