【发布时间】:2019-05-20 02:06:22
【问题描述】:
我正在尝试用圆圈创建倒计时。圆圈将显示与给定时间相比已经过去了多少时间。因此,如果倒计时是 10 秒并且已经过了 5 秒,则将绘制半圈。我想出了这段代码:
from math import pi
import pygame
pygame.init()
(x, y) = (800, 600)
screen = pygame.display.set_mode((x, y))
clock = pygame.time.Clock()
radius = 50
# Just to place the circle in the center later on
top_left_corner = ((x / 2) - (radius / 2), (y / 2) - (radius / 2))
outer_rect = pygame.Rect(top_left_corner, (radius, radius))
countdown = 1000 # seconds
angle_per_frame = 2 * pi / (countdown * 60)
angle_drawn = 0
new_angle = angle_per_frame
while True:
if angle_drawn < 2 * pi:
new_angle += angle_drawn + angle_per_frame
pygame.draw.arc(screen, (255, 255, 255), outer_rect, angle_drawn, new_angle, 10)
angle_drawn += angle_per_frame
clock.tick(60)
pygame.display.update(outer_rect)
所以fps = 60 在每一帧中我都在画2 * pi / countdown * fps,将一个完整的圆圈分成几帧。然后在每一帧中,画出圆圈的一部分。似乎画的圈很好,但不能用于定时器,原因有二:
这个圆圈似乎比给定的时间更短。
在画圆时,圆的最后一部分似乎画得更快。
谁能指出我做错了什么?
【问题讨论】:
标签: python python-3.x pygame