-1
from sys import exit
haskey = 0

# start function
def start():
print "You wake up in an empty room, feels like you've been here for days. You can't         remember anything from your past. All there is in the room is a digital clock. It says 3:26am, May 5, 2012. Get out of the room?"

next = raw_input("> ").lower()
if "yes" in next:
    lobby()
elif "no" in next:
    print "We insist"
else:
    print "Try again."

def lobby():
while True:
    print "You arrived at a lobby, all you can see are four doors. Which door   to enter? (first, second, third, fourth)?"

    next = raw_input("> ").lower()
    if "first" in next:
        firstdoor()
    elif "second" in next:
        seconddoor()
    elif "third" in next:
        thirddoor()
    elif "fourth" in next:
        fourthdoor()
    else:
        print "Are you dumb and you can't even follow instructions?"

def firstdoor():
print "You arrive at another empty room, examine further or exit?"
choice = raw_input("> ").lower()
if "examine" in choice:
    print "A trap door opened, you fell in it and died."
    exit()
elif "exit" in choice:
    lobby()
else:
    print "Are you dumb and you can't even follow instructions?"

def seconddoor():
print "You arrive at the study room, examine room or exit?"
choice = raw_input("> ").lower()
if "examine" in choice:
    print "There is a note on the table, read it?"
    secondchoice = raw_input("> ").lower()
    if "yes" in secondchoice:
        note()
    elif "no" in secondchoice:
        print "Returning to lobby."
        lobby()

def note():
print """Security Log (040412): A man from the city travelling along the highway loses control of his vehicle and fell to the cliff. He was able to jump and grab a hold to the bushes growing at the side of the cliff. We were able to rescue him, but as soon as we secured him to the ground he violently reacted to our help and fainted. A few minutes later he was out of control, like he was possessed by a demon. We had no choice but to sedate him and keep him locked in our prison until authorities from the city arrive and examine him. The key to his cell is in the vault in the vault room. The keycode changes depending on the current date.
"""
print "Returning to lobby."
lobby()

def thirddoor():
if haskey == 0:
    print "Door is locked, you need a key to continue."
    print "%d" % haskey
    lobby()
elif haskey == 1:
    exit()

def exit():
print "You are now free!"
print "To be continued.."

def fourthdoor():
print "There is a vault inside the room. Use vault?"
usevault = raw_input("> ")
if "yes" in usevault:
    vault()
else:
    print "Returning to lobby.."
    lobby()

def vault():
while True:
    print "There is a security code for this door. Enter code:"
    code = raw_input("> ")
    if "05042012" in code:
        print "Correct!"
        print "Returning to lobby.."
        haskey = int(1)
        print "%d" % haskey
        lobby()
    else:
        print "Code Error! Try again?"

start()

Pythonのチュートリアル用にこのミニテキストゲームがあり、fourthdoor/vault関数を使用してプレーヤーにコードを尋ねています.正しく入力された場合、変数の値が変更され、3番目のドアを開くためのキーとして使用されます. 問題は、vault コードが正しく指定されているときに変数の値が変更されても、ドアを開けられないことです。

誰でも私を助けることができますか?

4

1 に答える 1

0

Python がhaskey = int(1)の内部に遭遇すると、内部でしか見ることができないvaultという名前の新しいローカル変数を作成します。その関数で見たとき、ファイルの先頭で宣言するグローバルを意味することをpythonに伝える必要があります。の先頭に追加することでこれを行うことができます。すなわち:haskeyvaulthaskeyhaskeyglobal haskeyvault

def vault():
    global haskey
    while True:
        print "There is a security code for this door. Enter code:"
        code = raw_input("> ")
        ...
于 2012-05-04T17:32:32.323 に答える