如何在Pygame中缓慢绘制一个圆形?

3

我想在 Pygame 中缓慢绘制圆形,以便裸眼可以看到绘制的过程。我从 StackOverflow 上找到了一个函数,用于通过递增终点并保持起点不变来绘制直线,但我无法弄清如何在 Pygame 屏幕上缓慢地绘制圆形。

4个回答

2
您可以使用标准的正弦和余弦圆形公式:
  • x = r * cos(radians(i)) + a
  • y = r * sin(radians(i)) + b
其中,a 是圆心的 x 坐标,b 是圆心的 y 坐标,r 是圆的半径。
要减慢动画速度,请使用 Clock 对象。您可以从内置的 math 模块中访问 sincos 函数(请注意,您需要将值作为弧度传递,因此需要导入 radians 函数)。
实现如下:
import pygame
from math import sin, cos, radians

pygame.init()
wn = pygame.display.set_mode((600, 600))

r = 100
a = 300
b = 200

clock = pygame.time.Clock()
for i in range(1, 361):
    clock.tick(30)
    pygame.draw.circle(wn, (255, 255, 255), (int(r * cos(radians(i)) + a), int(r * sin(radians(i)) + b)), 2)
    pygame.display.update()

输出:

在此输入图片描述

如果您更喜欢使用标准线作为轮廓而不是重叠的点,请使用pygame.draw.line函数,如下所示:

import pygame
from math import sin, cos, radians

pygame.init()
wn = pygame.display.set_mode((600, 600))

r = 100
a = 300
b = 200

def x_y(r, i, a, b):
    return (int(r * cos(radians(i)) + a), int(r * sin(radians(i)) + b))

clock = pygame.time.Clock()
for i in range(0, 360, 2):
    clock.tick(30)
    pygame.draw.line(wn, (255, 255, 255), x_y(r, i, a, b), x_y(r, i+1, a, b), 2)
    pygame.display.update()

0

我建议使用turtle库,因为它包含一个圆形函数。例如,circle(40)将绘制一个半径为40个单位的圆。当您运行程序时,圆将在您面前绘制。


你好!当一个问题询问如何使用一个模块时,建议使用另一个模块的解决方案并不是一个答案。 - Ann Zen

0

你的问题说明你的主要目标只是画一个圆,所以我建议你考虑使用turtle。

你可以运行这些代码并获得输出:

import turtle
  
t = turtle.Turtle()
t.circle(50)

它能在pygame屏幕上运行吗? - Bibek Paul
以上答案将创建一个不同的海龟屏幕,并在那里绘制一个圆形。 - Irfan wani
你好!当一个问题询问如何使用一个模块时,建议使用另一个模块的解决方案并不是一个答案。 - Ann Zen

0
import pygame
pygame.init()
screen = pygame.display.set_mode((626, 416))

pygame.draw.circle(screen, (r,g,b), (x, y), R, w)
running = True
while running:
    pygame.display.update()
    for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False

这是如何在pygame屏幕上绘制一个圆的代码,使用(r, g, b)作为颜色,(x, y)作为中心点,R作为半径,w作为圆的厚度。


对不起,这并没有做到 OP 指定的功能。 - Ann Zen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接