首页 > 解决方案 > 得到没有类的 pygame.Rect 颜色

问题描述

我正在尝试将康威的生活游戏编码为工作资格测试的一部分,使用 Python 和仅没有类的 PyGame 库我的方法是创建一个矩形网格并将每个矩形分配给一个二维数组到这一点方法已经完成,现在作为游戏规则的一部分,我需要检查矩形颜色,有没有办法检查 pygame.Rect 对象的颜色?

以这种方式创建的每个矩形:

for y in range(0, WindowDimensions[1], CellSize):
    for x in range(0, WindowDimensions[0], CellSize):
        cell = pygame.Rect(x, y, CellSize, CellSize)
        AddCellToArray(cell)
        pygame.draw.rect(surface=Window, color=BLACK, rect=cell, width=1)
Column, Row = 0, 0

def AddCellToArray(cell):
    nonlocal Column, Row
    if Row < len(BoardArr):
        if Column < len(BoardArr[0]):
            BoardArr[Row][Column] = cell
            Column += 1
        else:
            Row += 1
            Column = 0
            BoardArr[Row][Column] = cell
            Column += 1

标签: pythonpygamerectconways-game-of-life

解决方案


pygame.Rect物体没有颜色。当您调用pygame.draw.rect屏幕上由矩形定义的区域时,会填充颜色。

将矩形及其颜色存储在BoardArr

for y in range(0, WindowDimensions[1], CellSize):
    for x in range(0, WindowDimensions[0], CellSize):
        cell = pygame.Rect(x, y, CellSize, CellSize)
        color = BLACK
        AddCellToArray(cell, color)
        pygame.draw.rect(surface=Window, color=color, rect=cell, width=1)
Column, Row = 0, 0

def AddCellToArray(cell, color):
    nonlocal Column, Row
    if Row < len(BoardArr):
        if Column < len(BoardArr[0]):
            BoardArr[Row][Column] = [cell, color]
            Column += 1
        else:
            Row += 1
            Column = 0
            BoardArr[Row][Column] = [cell, color]
            Column += 1

推荐阅读