映射数组function/syntax 问题

Map array function/syntax problems

我正在为学校制作一个 python 小游戏,但我在理解要使用的语法时遇到问题。

def draw_detail_from_array():
    for y in new_map_array:
        for x, _ in enumerate(y):
            if y[x] == "v":
                mapx = y[x].index
                mapy=new_map_array[y].index
                DISPLAYSURF.blit(pygame.image.load("grass1.png"), (32,  32))
                DISPLAYSURF.blit(pygame.image.load("grass1.png"), (mapx + 1) * 32, (mapy + 1) * 32)

所以我有一个二维数组,当我循环遍历它时,如果有 "v" 我希望它在与数组中的位置对应的位置放置一个精灵。

我遇到的问题是我不知道如何从当前的 x 和 y 中获取索引并将其用于 "blit" 精灵到屏幕位置(数组对应于20 x 15 的正方形网格,大小为 32 x 32 像素。) 该数组已经随机填充 "v" 替换代表空白的“_” space.

我在此基础上尝试了几种不同的方法,我觉得 stuck.Everything 我凭记忆尝试会给我这样的错误:

unsupported operand type(s) for +: 'builtin_function_or_method' and 'int'

所以我知道我要么没有使用正确的函数或语法,要么我的函数结构存在更大的总体问题。我对 python 还是比较陌生,这让我筋疲力尽。任何帮助将不胜感激。

mapx = y[x].index
mapy=new_map_array[y].index

因为index这里有一个函数你必须这样调用它

mapx = y[x].index()
mapy=new_map_array[y].index()

如果省略括号,而不是函数的结果,您会将 函数本身 分配给 mapxmapy,导致 unsupported operand type(s) for +: 'builtin_function_or_method' and 'int'

简单的像这样怎么样:

def draw_detail_from_array():
    x, y = 0, 0
    for row in new_map_array:
        for col in row:
            if col == "v":
                DISPLAYSURF.blit(pygame.image.load("grass1.png"), (x, y))
            x += 32
        y += 32
        x = 0

注意不要反复加载图片;这是一个主要的性能问题。只需加载一次即可重复使用。