2017-04-06 4 views
1

In der Hoffnung, dass jemand auf diesem Tag aktiv ist, werde ich ein Problem in Bezug auf Inform7 hier ausgeben. Wir verwenden diese Sprache derzeit im College, um mit der Struktur von Spleißprojekten und Aufgaben in einer Gruppe in Kontakt zu kommen.Sperren einer Tür in Inform7 funktioniert in einem Fall, aber nicht in einem anderen

Die aktuelle Aufgabe besteht darin, eine Tür zu entriegeln, wenn eine Taste gedrückt wird, und sie nach einer Umdrehung zu schließen. Der Code ich verwende, ist folgendes:

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; 

Wo ich Dooropen als Attribut verwenden um zu überprüfen, ob die Tür offen war oder nicht. Problem ist jetzt, dass ich den Knopf drücken kann, gehe in den geöffneten Raum, es sagt, dass die Tür geschlossen ist, aber ich kann ohne Probleme aus dem Raum gehen und es scheint, dass es von nun an freigeschaltet ist.

Auf der anderen Seite habe ich einen anderen Code:

TuerSiT eine Tür ist. Es ist südlich von R024 und nördlich von Flur005R. Es ist verschlossen.

Der Sicherheitsausschluss öffnet 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. 

Wo die now doorname is locked funktioniert ganz gut.

Gibt es irgendetwas, was ich falsch gemacht habe? Ich habe auch versucht, versteckte Schlüssel zu erstellen, um die entsperrt zu haben, weil das war, wo ich dachte, das Problem war, aber es scheint, ich bin nicht in der Lage, die Tür zu sperren.

Jede Hilfe wird sehr geschätzt!

Antwort

2

So scheint es, der erste muss die Tür schließen, was ich an der anderen Tür nicht getestet habe. Also

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

funktioniert alles in Ordnung.

+0

In der Tat, Offenheit und Lockedness sind separate Eigenschaften. Ich würde erwarten, dass das Sperren der Tür, wie Sie es taten, in der Tat war, es zu sperren. – curiousdannii

+0

Ja, ich habe das verstanden, aber ich dachte, dass Sperren das Schließen des ersten Schritts impliziert. Wenn ich dir einen Schlüssel vor eine offene Tür geben würde und dir sagen würde, dass du ihn verriegeln sollst, würdest du nicht den Schlüssel drehen, ihn herausziehen und weggehen, die Tür offen lassen, was mich verwirrt hat. Danke für die zusätzliche Erklärung! – geisterfurz007

+0

Ich glaube nicht, dass diese Ebene der Modellierung standardmäßig enthalten ist - IIRC-Sperre steuert nur, ob Sie das Objekt öffnen oder schließen dürfen. Sie können die Standardregeln überprüfen, um genau zu sehen, was passiert. – curiousdannii

Verwandte Themen