在Pygame中绘制五边形,六边形

时间:2015-03-15 18:05:55

标签: python algorithm pygame python-3.4

我试图制作可绘制五边形六边形等的函数。对算法感兴趣,我应该将这些行与pygame.draw.line进行比较吗?看起来围绕确定线条的线索做了太多工作。有没有简单的方法来绘制它们?此外,我不知道另一个可以绘制这些东西的图书馆。我只知道Pygame,还有另一个吗?

2 个答案:

答案 0 :(得分:5)

您可以使用lines绘制它。您只需要使用简单的三角函数生成顶点列表。

这样的事情(如果我没有犯错):

def draw_ngon(Surface, color, n, radius, position):
    pi2 = 2 * 3.14

    for i in range(0, n):
        pygame.draw.line(Surface, color, position, (cos(i / n * pi2) * radius + position[0], sin(i / n * pi2) * radius + position[1]))

    return pygame.draw.lines(Surface,
          color,
          True,
          [(cos(i / n * pi2) * radius + position[0], sin(i / n * pi2) * radius + position[1]) for i in range(0, n)])

答案 1 :(得分:0)

您可以使用pygame.draw.polygon(surface, color, point_list)绘制多边形。在这种情况下,可以使用三角函数生成顶点列表,并将其作为point_list参数传递。这是一个绘制具有vertex_count顶点的常规多边形的函数:

def draw_regular_polygon(surface, color, vertex_count, radius, position):
    n, r = vertex_count, radius
    x, y = position
    pygame.draw.polygon(surface, color, [
        (x + r * cos(2 * pi * i / n), y + r * sin(2 * pi * i / n))
        for i in range(n)
    ])

您可以运行this demo并在运行中查看此功能,并使用UP / DOWN箭头键更改顶点数。