Отлично работает на моем компьютере.Сложно сказать, но я считаю, что проблема заключается в дизайне кода.Как правило, все рисование и анимация должны происходить в основном цикле (while True
), и нет необходимости добавлять какие-либо временные задержки.
x = 0 # keep track of the x location
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# clear the screen each time
screen.fill([255, 255, 255])
# draw the circle (notice the x variable wrapped in int())
pygame.draw.circle(screen, [255, 0, 255], [int(50 + x), 50], 50, 0)
# adjust higher or lower for faster animations
x += 0.1
# flip the display
pygame.display.flip()
Теперь анимация происходит синхронно с основным циклом,Помните, что пиксели на экране считаются целыми числами, поэтому любые операции с плавающей точкой (например, x += 0.1
) должны быть int
при отображении на экране.
Если вы не хотитедля работы с числами с плавающей точкой и десятичными числами минимальная скорость будет установлена на 1, но настраивайте ее только через каждое определенное количество кадров
x = 0 # keep track of the x location
frames = 0 # keep track of frames
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# clear the screen each time
screen.fill([255, 255, 255])
# draw the circle (notice no int() function here)
pygame.draw.circle(screen, [255, 0, 255], [50 + x, 50], 50, 0)
# every 50 frames, increase movement. adjust higher or lower for varying speeds
if frames % 50 == 0:
x += 1 # never going to be a float, minimum of 1
frames += 1
# flip the display
pygame.display.flip()