使用 RGB 值设置 numpy zeros 元素

Setting numpy zeros elements with RGB values

我目前正在尝试使用 pygame 编写俄罗斯方块。

我有一个 numpy zeros 数组,它充当俄罗斯方块 window 及其内容。由于它以零开始,因此 window 上没有任何内容。当一个块被放置在底部时,矩阵就会用 RGB 值更新这些零的位置。然后我会遍历这个矩阵,将每个方块的颜色绘制到游戏中 window.

我已经编写了代码,但是在我的 matrixUpdate 方法中出现此错误:

ValueError: setting an array element with a sequence.

这是我与问题相关的代码:

class Tetrimino(pygame.sprite.Sprite):
    def __init__(self, mino, color):
        pygame.sprite.Sprite.__init__(self)
        self.setMino(mino)
        self.color = color
        self.x = 160
        self.y = 160
        self.r = 0
        self.changey = 0
        self.changex = 0

    # Update the matrix of RGB values's
    def matrixUpdate(self, matrix):
        for part in self.getMino():
            matrix[((part[1] + self.y) // 40), ((part[0] + self.x) // 40)] = [self.color]

        return matrix

matrix = np.zeros((24, 10))

看起来 Numpy 不喜欢在数组中放置不同的类型,除非你这样创建它:

matrix = np.zeros((24, 10), dtype=object)