使用列表在 pygame 中绘制多边形

Drawing polygons in pygame using list

我想画很多简单的多边形。所以我决定制作一个由所有多边形组成的元组,这样我就可以使用 for poly in POLYGONS.

POLYGONS = (sc,(255,255,255),(0,50),ect.)

for poly in POLYGONS:
    pygame.draw.polygon(poly)

但是当我实际这样做时,函数将这个元组作为第一个参数。有什么办法可以提高效率(没有 i[0]、i[1] 等等)? 我是一名初级程序员,所以这个问题听起来很明显。

您必须制作一个元组列表:

POLYGONS = [
    ((255, 0, 0), [(100, 50), (50, 150), [150, 150]], True),
    ((0, 0, 255), [(100, 150), (50, 50), [150, 50]], True)
]

并且您必须使用 asterisk (*) operator:

解压缩元组
for poly in POLYGONS:
    pygame.draw.polygon(window, *poly)

最小示例:

import pygame

pygame.init()
window = pygame.display.set_mode((200, 200))
clock = pygame.time.Clock()

POLYGONS = [
    ((255, 0, 0), [(100, 50), (50, 150), [150, 150]], True),
    ((0, 0, 255), [(100, 150), (50, 50), [150, 50]], True)
]

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False 

    window_center = window.get_rect().center

    window.fill(0)
    for poly in POLYGONS:
        pygame.draw.polygon(window, *poly)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
exit()