pygame不会绘制矩形

时间:2017-06-27 16:03:37

标签: python python-2.7 pygame

我使用python 2.7制作一个简单的游戏,每当我尝试绘制一个矩形时,我都会得到这个:

  

追踪(最近一次通话):     文件" C:/Users/HP/Desktop/experiment.py" ;,第335行,在       (宽度,高度)])   TypeError:无效的颜色参数

这是相关代码

BLACK = (0, 0, 0)
grid = []
for row in range(10):
    #add empty array
    grid.append([])
    for column in range(11):
        grid[row].append(BLACK)
WIDTH = 30
HEIGHT = 30
MARGIN = 5
#starting pygame
pygame.init()

#Setting window dimensions
WINDOW_SIZE = [425,320]
screen = pygame.display.set_mode(WINDOW_SIZE)
stopped = False
while not stopped:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            stopped = True
#draw grid
    for row in range(10):
        for column in range(11):
            Color = grid[row][column]
            pygame.draw.rect(screen,Color,
                             [((MARGIN + WIDTH) * column + MARGIN, (MARGIN + HEIGHT) * row + MARGIN),
                              (WIDTH ,HEIGHT)])
    clock.tick(60)

    pygame.display.flip()


pygame.quit()

任何帮助都将不胜感激!!提前谢谢!

编辑:如果需要在这里使用pastebin https://pastebin.com/jCXT0M4a

中的整个脚本

原谅它的质量

1 个答案:

答案 0 :(得分:1)

在for循环中打印网格和Color,您会看到网格的某些行包含元组列表而不仅仅是元组。 refresh函数会导致问题,尤其是这些行:

row1 = [right_side[0],front[0],left_side[0],back[0]]
row2 = [right_side[1],front[1],left_side[1],back[1]]
row3 = [right_side[2],front[2],left_side[2],back[2]]

在我看来,row1-3应该是元组列表,但是你创建了元组列表的列表:

[[(0, 255, 0), (0, 255, 0), (0, 255, 0)], [(255, 0, 0), (255, 0, 0), (255, 0, 0)], [(255, 255, 0), (255, 255, 0), (255, 255, 0)], [(0, 0, 255), (0, 0, 255), (0, 0, 255)]]

在Python 3.5及更高版本中,您可以使用最新的其他解包功能,这些功能允许您使用星号*运算符将列表解压缩到其他列表中。

row1 = [*right_side[0], *front[0], *left_side[0], *back[0]]

在其他版本中,您可以使用these techniques之一。