0

我正在编写一个文本冒险,我创建了一个系统,用户可以在其中观察一个区域和该区域中的对象。

例如,用户可以观察一个区域:

“一片平淡而安静的沙漠。你可以看到一只、一只老鼠和一把扫帚。”

它在每个使用 for 循环之前创建一个带有数字的项目列表。

  1. 带上或观察猫
  2. 拿走或观察鼠标

等等

我想知道如何为每个 dict 条目分配一个数字,因为它出现在文本中。

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

每个键的值是对象的实例数。如何使我的代码允许每个键在其字典值中具有一个值,以便能够按顺序引用?

用户应该能够键入对应于编号列表的他/她的响应编号。如果他们选择“1”,他们会选择观察猫,这可能会根据该词典中的“对象编号 1”而改变,而这会根据用户当前所在的区域而改变。

如果用户在一个黑暗的洞穴中,那么 SAME 字典中的“object number 1”可能会更改为“dog”。用户应该能够选择“1”并观察一只狗而不是一只猫……

那么如何检测哪个键位于字典的哪个位置?

4

1 回答 1

1

这里有两种不同的数据。一个是一组长期的特征(出现了多少个对象实例),另一个是一个非常短暂的索引,仅由用户用于菜单选择。将第二个用例委托给执行提示的函数。它可以使用您传递给函数的简单列表并找出索引本身。

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 回答