2017-04-06 182 views
1

希望有人在此标签上激活我将在此处发出有关Inform7的问题。我们目前在大学里使用这种语言来接触一个小组中拼接项目和任务的结构。在Inform7中锁定一扇门在一种情况下工作,但不在另一种情况下

当前的任务是在按下按钮时解锁门,一回合后关闭门。我使用的代码如下:

doorOpen is a number which varies. doorOpen is 0. [ = false] 

TuerK is a door. It is south of Flur006R and north of R028a. It is locked. 
Tbutton_flur is in Flur006R. Tbutton_flur can be pushed. 
Instead of pushing Tbutton_flur: 
    now TuerK is unlocked; 
    say "Die Tür öffnet sich"; 
    now doorOpen is 2; 

Every turn when doorOpen is 1: 
    now doorOpen is 0; 
    now TuerK is locked; 
    say "Door closes!". 

Every turn when doorOpen is 2: 
    decrement doorOpen. 

Tbutton_raum is in R028a. Tbutton_raum can be pushed. 
Instead of pushing Tbutton_raum: 
    now TuerK is unlocked; 
    say "Door opens!"; 
    now doorOpen is 2; 

我在哪里使用doorOpen作为属性检查门是否开着与否。现在的问题是,我可以按下按钮,进入打开的房间,它说门正在关闭,但我可以毫无问题地离开房间,看起来它从现在开始解锁。

另一方面,我有其他代码:

TuerSiT是一扇门。它位于R024以南,Flur005R以北。它被锁定。

Sicherheitsausweis解锁TuerSiT。

Before going to R024: 
    if player is holding Sicherheitsausweis: 
     now TuerSiT is unlocked; 
     say "Der Sicherheitsausweis hat die Tür entsperrt"; 
    otherwise: 
     now TuerSiT is locked. 

其中now doorname is locked工作得很好。

我有什么不正确的吗?我也尝试创建隐藏的钥匙来解锁,因为那是我认为问题所在的地方,但似乎我无法锁定门。

任何帮助非常感谢!

回答

2

所以它似乎首先必须关上门,这是我没有在另一扇门上测试。所以

now the door is closed; 
now the door is locked. 

工作都很好。

+0

事实上,开放性和锁定性是独立的属性。我希望像你在做的那样锁上门实际上是锁定它的门。 – curiousdannii

+0

是的,我知道了,但我认为锁定意味着首先关闭它。如果我将一个关键位置交给开门前的一个关键位置,并告诉你将其锁定,则不会将钥匙拉出,然后离开门,这让我感到困惑。感谢您的补充解释! – geisterfurz007

+0

默认情况下,我不认为包含建模级别 - IIRC锁定只控制您是否允许打开或关闭对象。您可以查看标准规则以查看究竟发生了什么。 – curiousdannii

相关问题