我的问题可能看起来令人困惑,但这是我能想到措辞的唯一方法。我为任何困惑道歉,我会尽力解释。
基本上我要做的是在我的游戏中有一个简单的退出功能,询问“你想退出吗?”如果用户输入no,则将它们返回到它们所在的函数。
这是我试图做的,但似乎只是循环回'bear_room()'函数。
def bear_room():
print "You are greeted by a bear"
next = raw_input()
if next == 'fight':
print 'You tried to fight a bear. You died'
elif next == 'exit':
exit_game(bear_room())
else:
print 'I did not understand that!'
bear_room()
def exit_game(stage):
print '\033[31m Are you sure you want to exit? \033[0m'
con_ext = raw_input(">")
if con_ext == 'yes':
exit()
elif con_ext == 'no':
stage
else:
print 'Please type ''yes'' or ''no'
exit_game()
答案 0 :(得分:1)
你几乎得到了它;当你把它作为一个论点传递时,你只需要调用bear_room
:
elif next == 'exit':
exit_game(bear_room)
相反,您需要将stage
作为函数调用:
elif con_ext == 'no':
stage()
答案 1 :(得分:1)
您需要了解传递函数和调用函数之间的区别。
在这里,您将对函数raw_input
的引用复制到变量next
中,而不实际执行它。您可能希望将括号()
添加到raw_input
:
next = raw_input
在这里,您以递归方式再次调用bear_room()
,而不是将对它的引用传递给exit_game
函数。您可能希望将括号()
移至bear_room
:
elif next == 'exit':
exit_game(bear_room())
同样,提及没有括号的函数不会执行它,所以你也想在这里添加它们:
elif con_ext == 'no':
stage