微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我最近开始学习 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()

我得到的输出

Output I get

我想要的输出

Output I want

我尝试了什么

 pygame.draw.lines(screen,['green','blue','orange'],100)])

错误

ValueError: invalid color argument

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

pygame.draw.line(screen,'green',(10,200))
pygame.draw.line(screen,100))
pygame.draw.line(screen,'orange',100))

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

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

PS:如果需要任何说明,请告诉我。非常感谢。

解决方法

您必须分别绘制每条线段。编写一个函数,使用一系列点和颜色来画线:

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)

使用函数画线:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。