0

私はテキスト アドベンチャーをコーディングしており、ユーザーがエリアとそのエリア内のオブジェクトを観察できるシステムを作成しました。

たとえば、ユーザーは次のように領域を観察できます。

「当たり障りのない静かな砂漠。猫ネズミほうきが見える。」

forループを使用する前に、番号付きのアイテムのリストを作成します。

  1. 猫を飼う・観察する
  2. マウスを取るか観察する

テキストに表示される各辞書エントリに番号を割り当てる方法を知りたいです。

{"cat":1, "mouse":1, "broom":1}

各キーの値は、オブジェクトのインスタンスの数です。コードで各キーが辞書の値から離れた値を持つようにして、順番に参照できるようにするにはどうすればよいですか?

ユーザーは、番号付きリストに対応する応答の番号を入力できる必要があります。「1」を選択すると、猫を観察することを選択します。これは、ユーザーが現在いるエリアに基づいて変化する、その辞書にある「オブジェクト番号 1」に基づいて変化する可能性があります。

ユーザーが暗い洞窟にいる場合、その同じ辞書の「オブジェクト番号 1」が「犬」に変更される可能性があります。ユーザーは「1」を選択して、CAT の代わりに DOG を観察できるはずです...

では、どのキーが辞書のどの位置にあるかをどのように検出できますか?

4

1 に答える 1

1

ここには 2 種類のデータがあります。1 つは特性の長期的なセット (オブジェクトのインスタンスが表示される数) であり、もう 1 つはユーザーがメニュー選択のためにのみ使用する非常に一時的なインデックスです。その 2 番目のユース ケースを、プロンプトを表示する関数に委譲します。関数に渡す単純なリストを使用して、インデックス自体を把握できます。

item_database = {"cat":1, "mouse":1, "broom":1}

def multiprompt(base, *items):
    """Prompt for a list of items and return the item selected"""
    while 1:
        for index, item in enumerate(items, 1):
            print("{}. {} {}".format(index, base, item))
        try:
            choice = int(input("Select number: "))
            if choice < 1 or choice > len(items):
                raise ValueError()
            return items[choice-1]
        except ValueError:
            print("Error, try again")

choice = multiprompt("Take or observe", "cat", "mouse", "broom")
print("You chose {} which as count {}".format(choice,
    item_database[choice]))
于 2016-04-10T03:52:24.130 に答える