如何在 pygame.draw.lines 中为每一行使用不同的颜色

Ali*_*ice 5 python pygame

无论如何我可以为使用绘制的每条线使用不同的颜色pygame.draw.lines吗?这是我的代码:

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480), pygame.SCALED)
screen.fill('white')

pygame.draw.lines(screen, 'red', True, [(10, 100), (20, 200), (30, 100)]) # all lines are red

while True:
    pygame.display.update()
Run Code Online (Sandbox Code Playgroud)

我得到的输出:

我得到的输出

我想要的输出:

我想要的输出

我试过的:

 pygame.draw.lines(screen, ['green', 'blue', 'orange'], True, [(10, 100), (20, 200), (30, 100)])
Run Code Online (Sandbox Code Playgroud)

错误:

ValueError: invalid color argument
Run Code Online (Sandbox Code Playgroud)

换句话说,我想在下面的代码中实现我想要的但是使用 pygame.draw.lines

pygame.draw.line(screen, 'green', (10, 100), (20, 200))
pygame.draw.line(screen, 'blue', (20, 200), (30, 100))
pygame.draw.line(screen, 'orange', (30, 100), (10, 100))
Run Code Online (Sandbox Code Playgroud)

我检查了pygame.draw.lines 文档,但我不确定color那里的参数是否采用我给出的列表。它只提到“ Color or int or tuple(int, int, int, [int]))”。

这个例子是一个三角形,但在我的实际用例中,我想画一个十边形,pygame.draw.line如果我想为每条线使用不同的颜色,我不确定使用10 次是否合适。

Rab*_*d76 4

您必须单独绘制每条线段。编写一个使用点和颜色列表来绘制线条的函数:

def draw_colorful_line(surf, colors, closed, points, width=1):
    for i in range(len(points)-1):
        pygame.draw.line(surf, colors[i], points[i], points[i+1], width)
    if closed:
        pygame.draw.line(surf, colors[-1], points[-1], points[0], width)
Run Code Online (Sandbox Code Playgroud)

使用函数来画线:

colors = ['green', 'blue', 'red']
points = [(10, 100), (20, 200), (30, 100)]
draw_colorful_line(screen, colors, True, points)
Run Code Online (Sandbox Code Playgroud)