这是我遇到麻烦的基本想法:我正在尝试制作一个简单的游戏,你在一个房间,你有2个房间从第一个分支,需要“完成”才能继续。我希望第2和第3个房间将我原来的True
语句更改为False
语句,这些语句在进行游戏之前都需要切换。
来自sys import exit
def room_1():
print "You're in room one, there are two doors to room 2 and 3."
print "Where do you want to go?"
done_2=True
done_3=True
while True:
move=raw_input("'room 2' or 'room 3'? >")
if move == 'room 2':
room_2()
elif move == 'room 3':
room_3()
else:
print "not a valid answer"
print "You Win!"
exit(0)
def room_2():
print "You finished room 2!"
done_1=False
raw_input('Press button')
room_1()
def room_3():
print "You finished room 3!"
raw_input('press button')
done_3=False
room_1()
room_1()
如何更改2号和3号房间内的done_语句? 〜
答案 0 :(得分:4)
在Python中,您必须先声明全局变量,然后才能分配它们;否则,任何赋值都会影响全局变量。
def room_2():
global done_1 # <- right here
print "You finished room 2!"
done_1=False
raw_input('Press button')
room_1()
def room_3():
global done_3 # <- right here
print "You finished room 3!"
raw_input('press button')
done_3=False
room_1()
这通常是不好的风格,特别是对于这样一个简单的情况。这使得更难以推断出你的功能如何运作,它们的变化以及顺序是什么。
根据需要从函数返回True
或False
会更容易,更易读,也更简单。
如果您试图将您的功能视为具有输入的“黑匣子”并保证某些输出,则通常有助于避免可能出现的许多混乱错误。
答案 1 :(得分:0)
您需要在函数room_1()
之外声明done_1和done_2作为全局变量