1

我的问题可能看起来令人困惑,但这是我能想到的唯一措辞。对于任何混淆,我深表歉意,我会尽力解释。

基本上我想做的是在我的游戏中有一个简单的退出功能,询问“你想退出吗?” 如果用户输入 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()
4

2 回答 2

1

你几乎明白了;bear_room当您将其作为参数传递时,您只需要不调用:

    elif next == 'exit':
        exit_game(bear_room)

相反,您需要stage作为函数调用:

    elif con_ext == 'no':
        stage()
于 2013-03-17T15:33:53.243 回答
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
于 2013-03-17T15:38:32.290 回答