我使用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
中的整个脚本原谅它的质量
答案 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之一。