2017-10-19 8 views
1

私はまだPythonを学んでいますが、Pythonでプログラミングしていた私の友人はこれがうまくいくはずだと言いますが、それはありませんか?Pythonゲーム。私の入力とif/else関数を再呼び出しできないのはなぜですか?

これまでのすべてのコードは、私が作っているこの基本的な「エスケープ・ザ・ルーム」ゲームの最初の話でした。ここまでのコードは動作します(ゲームを説明する基本的な印刷機能)。

私はプレーヤーに彼らが部屋にいると、彼らは2つのいずれかを行うことができますシナリオを与える:

def intro_room_input(): 
    intro_action = input("What would you like to do? (Please enter either: 1 or 2) ") 
    return intro_action; 

彼らは1または2を選択したときに/ elifの場合、これらの2つの関数は、のために隣にあり

def intro_room_result1(): 

print(
    """ 
    (Story stuff for the result of option 1. Not important to the code) 
    """) 

    return; 

彼らは2

def intro_room_result2(): 

    print(
    """ 
    (Story stuff for the result of option 2. Not important to the code) 

    """) 

    return; 
を選択した場合、この関数が出て再生されます:関数は、彼らは1を選択した場合、これらの機能に を実行します

これは、プレイヤーの入力を受けてそこからストーリーを続ける機能です。

def intro_action_if(string): 

    if string == "1":  
     intro_room_result1() 
    elif string == "2": 
     intro_room_result2() 
    else: 
     print("I'm sorry, that wasn't one of the options that was available..."+'\n'+ 
     "For this action, the options must be either '1' or '2'"+'\n'+ 
     "Let me ask again...") 
     intro_room_input() 
     intro_action_if(string) 
    return; 

最後intro_room_inputが正常に動作することを、それは以前の入力を再度実行しますが、あなたが実際に1または2を入力すると、それは彼らと何もしません。結果を出すためにif/elif/else関数を再実行することは望ましくありません。

最終的に私はすべて実行されるメインがあります。助けてください

def main(): 
    string = intro_room_input() 
    intro_action_if(string) 
    return; 


main() 

を、私はこのコードで間違って何見当がつかない!

+0

これは私が見ているものです:else文で 'intro_action_if'の結果を' string'に代入していないので、呼び出しは同じことをやり直します。 –

答えて

1

問題はintro_action_if()にあります。値を取得するために関数を呼び出すときは、stringの値を変更するのを忘れた。

すなわち、

#intro_room_input()   #wrong 

string = intro_room_input() #right 
intro_action_if(string) 

あなたが見ることができるように、あなたのコードでは、ユーザーinputを求めたにもかかわらず、およびreturnedそれは、あなたが返された値でstringを再割り当てするのを忘れました。したがって、あなたは以前に与えたのと同じ入力を維持し、その古い値をintro_action_if()に渡しました。

+0

ありがとう! :)私の機能の中でそれを再割り当てすることは、私が望んでいたのと同じように機能しました。 –

関連する問題