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

Drawing pentagon,hexagon in Pygame

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

您可以使用 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)])

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

def draw_regular_polygon(surface, color, vertex_count, radius, position, width=0):
    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)
    ], width)

您可以 运行 this demo 并查看此函数的运行情况,使用向上/向下箭头键更改顶点数。