0

テキストベースのアドベンチャーゲームを作成しています。キャラクターは、街区で構成されたマップをナビゲートしています。キャラクターを取得してから、正しい隣接ブロックに移動する がありますdirection_functionraw_inputただし、ピックアップするアイテムやほとんどのブロックでやり取りする人々など、特別な機能があります。ここも私が使っraw_inputています。適切なキーワードを入力すると対話しますが、方向を入力してそれらを無視すると、再びdirection_functionプロンプトを表示するに渡され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)
4

2 に答える 2

1

でデフォルトの引数値を使用してdirection_function、最終的な前の呼び出しの結果を に渡すことができますraw_input。たとえば、次のようになります。

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

指示が提供されない場合 (通常のワークフロー)、テストは最終的にいくつかを取得するために呼び出しraw_inputます。方向が指定されている場合 (既に読んだ場合に渡す方向など)、それが直接使用されます。

于 2012-08-30T16:31:12.457 に答える
-1

はい、これを可能にするような方法で関数を定義する必要があります。

たとえば、次のようなものを考えてみましょう。

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

    # do your stuff here

上記のように構造化された関数を使用すると、direction_function()メソッドを呼び出すコードブロックで相互作用値または方向条件を確認し、関数が呼び出された場所で取得した入力値を渡すことができます。したがって、方向がプレーヤーが選択するものである場合、入力は「default_val」である必要があります。

于 2012-08-30T16:33:27.437 に答える