2013-03-17 113 views
1

我的問題似乎令人困惑,但它是我想到措辭的唯一方法。我對任何混淆抱歉,我會盡我所能解釋。如何讓函數接受另一個函數的參數?

基本上,我試圖做的是有我的遊戲,要求中一個簡單的exit函數「你想退出嗎?」如果用戶輸入沒有返回他們回到他們在。

這裏的功能是什麼,我試圖做不過它似乎只是循環回「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

只是一個旁白:命名一個變量'next'會影響內置'next' - 所以你不妨考慮改變名字 - 例如'next_room' ... – 2013-03-17 15:47:51

回答

1

你差不多了;你只需要不叫bear_room當你將它作爲一個參數:

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

相反,你需要調用stage作爲一個功能:

elif con_ext == 'no': 
     stage() 
+0

工作很好!謝謝! – George 2013-03-17 15:46:08

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 
相關問題