变量值

时间:2012-05-04 17:06:18

标签: python

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

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

当python在haskey = int(1)内遇到vault时,会创建一个名为haskey的新局部变量,只能在vault内看到。你需要告诉python,当它在该函数中看到haskey时,你的意思是你在文件顶部声明的全局haskey。您可以将global haskey添加到vault的开头来执行此操作。即:

def vault():
    global haskey
    while True:
        print "There is a security code for this door. Enter code:"
        code = raw_input("> ")
        ...