1

私の質問は紛らわしいように思えるかもしれませんが、それが私が考えられる唯一の言い回しです。混乱させて申し訳ありませんが、説明するために最善を尽くします。

基本的に私がやろうとしているのは、ゲーム内に「終了しますか?」と尋ねる単純な終了機能を持たせることです。ユーザーが「いいえ」と入力すると、元の関数に戻ります。

これが私がやろうとしたことですが、「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

関数を渡すことと呼び出すことの違いを理解する必要があります。

ここでは、実際に実行せずに、関数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 に答える
1

あなたはほとんどそれを手に入れました。bear_room引数として渡すときに呼び出す必要はありません。

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

stage逆に、関数として呼び出す必要があります。

    elif con_ext == 'no':
        stage()
于 2013-03-17T15:33:53.243 に答える