-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 的教程的迷你文本游戏,我正在使用第四道门/保险库功能来询问玩家代码,如果输入正确,它会更改一个变量的值,用作打开第三道门的钥匙. 问题是即使在正确给出保险库代码的情况下更改了变量的值,我仍然无法打开门。

谁能帮我?

4

1 回答 1

0

当 python 遇到haskey = int(1)inside of 时vault,它会创建一个新的局部变量haskey,叫做你只能在里面看到vault。您需要告诉 python,当它haskey在该函数中看到时,您的意思是haskey您在文件顶部声明的全局。您可以通过添加global haskey到开头来做到这一点vault。IE:

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 回答