2012-08-30 106 views
0

我正在創建一個基於文本的冒險遊戲。該角色正在導航由城市街區組成的地圖。我有一個direction_function需要raw_input,然後將字符移動到正確的相鄰塊。不過,我擁有特殊功能,例如要在大部分區塊中選取或與人互動。這裏我也使用raw_input。如果他們輸入了正確的關鍵字,但是如果他們通過輸入方向忽略它們,則會將它們傳遞到direction_function,這會再次提示他們輸入raw_input。有沒有辦法將他們的初始答案傳遞到direction_function,以便他們不必重複他們的答案?蟒蛇繞過raw_input傳入其他raw_input

這裏是我的direction_function:

def direction_function(left, right, up, down, re): 
    direc = raw_input(">") 
    if direc in west: 
     left() 
    elif direc in east: 
     right() 
    elif direc in north: 
     up() 
    elif direc in south: 
     down() 
    elif direc in inventory_list: 
     inventory_check() 
     re() 
    else: 
     print "try again" 
     re() 

我指定的函數像這樣

def block3_0(): 
    print "You see a bike lying in your neighbor's yard. Not much else of interest." 
    direc = raw_input(">") 
    if direc in ("take bike", "steal bike", "ride bike", "borrow bike", "use bike"): 
     print "\n" 
     bike.remove("bike") 
     school_route() 
    else: 
     direction_function(block2_0, block4_0, block3_1, block3_0, block3_0) 
+0

你能發表一些代碼嗎?只有相關部分,不一定全部對話。 –

回答

1

那麼每個塊,你可以用你的direction_function默認參數值傳遞最終的結果先前致電raw_input,如:

def direction_function(direction=None): 
    direction = direction or raw_input() 
    # Do something with the input 

如果沒有提供方向(常規工作流程),則測試最終會調用raw_input以獲得一些結果。如果提供了一個方向(就像你已經閱讀的那個方向一樣),它將被直接使用。

+0

謝謝,像一個魅力工作:) –

-1

是的,你只需要以這種方式來定義你的功能就可以了。

例如,考慮這樣的事情:

def direction_function(input = 'default_val'): 
    if input != 'default_val': 
     input = raw_input() 

    # do your stuff here 

隨着你的功能結構類似於上述情況,你可以做的是檢查在代碼塊,你打電話給你的direction_function互動值或方向條件()方法並將函數被調用時所用的輸入值傳遞給它。所以如果方向是玩家選擇的方向,那麼輸入應該是'default_val'。

+1

有了這個代碼,如果輸入(不使用名稱'輸入',它掩蓋了一個內置)是什麼,但默認值,它會被'raw_input'調用覆蓋,防止傳入值。 –