Receiving KeyError: ' ' for my text based rpg

Receiving KeyError: ' ' for my text based rpg

我正在开发基于文本的角色扮演游戏以及一本名为 "Make Your Python Text Adventure" 的书,但我 运行 遇到了一些问题。目前,游戏的地图存储在字典中。但是,当我尝试 运行 程序时,我在 world.py 文件中得到一个 KeyError: ' '

我试过确定 KeyError 可能来自哪里,因为我知道这通常与字典 IIRC 中的条目有关。我无法找到此错误的来源,并且通过查看错误引用的代码行,我看不出 KeyError 可能来自何处。

    for y, dsl_row in enumerate(dsl_lines):
        row = []
        dsl_cells = dsl_row.split("|")
        dsl_cells = [c for c in dsl_cells if c]
        for x, dsl_cell in enumerate(dsl_cells):
            tile_type = tile_type_dict[dsl_cell]
            row.append(tile_type(x,y) if tile_type else None)

具体来说,错误是在 tile_type = tile_type_dict[dsl_cell] 行抛出的。

这是主游戏文件中也抛出错误的部分:

def play():
    print("Escape from Cave Terror!")
    world.parse_world_dsl()
    player = Player()
    while True:
        room = world.tile_at(player.x, player.y)
        print(room.intro_text())
        room.modify_player(player)
        choose_action(room,player)

此错误导致游戏在启动时崩溃。它会加载介绍行的文本,但是当游戏读取地图上的起始图块时,它会点击 KeyError。如果您需要更多源代码以便对此提出 replicate/offer 建议,请告诉我。该游戏针对游戏的各个方面分为 5 个不同的文件,主要游戏循环不在包含我提供的代码的文件中。这个街区是我应该清理的地方,还是其他地方?

世界地图文件错误如下:

world.py", line 115, in parse_world_dsl
    tile_type = tile_type_dict[dsl_cell]
KeyError: '    '

然后在主游戏文件中:

game.py", line 8, in play
    world.parse_world_dsl()

不一定是错误,但它参考了 world.py 文件,所以我认为它可能值得包含。

提前感谢大家提供的任何帮助!

因此您的字典键存储在此列表中:

dsl_cells = [c for c in dsl_cells if c]

您收到关键字错误 KeyError: ' ',这意味着您的密钥是 ' '。这不会被列表理解的 if c] 部分捕获。我会尝试将此行更改为:

dsl_cells = [c for c in dsl_cells if c.strip()]

这将删除元素 ' ',因为 ' '.strip()''

你可以试试:

dsl_cells = [c for c in dsl_cells if c.strip()]