使用帧数
计算机的速度非常快,可以在一秒钟内完成数百万个循环周期。现在显然,这对我们人类来说有点快。作为参考,电影以每秒 24 帧的速度运行。任何小于这个值的东西都会有明显的卡顿,超过 100 的值可能会导致事情移动得太快而我们看不到。
默认情况下,如果我们不创建限制,计算机将在一秒钟内尽可能多地执行游戏循环。为了限制它,我们使用fps 是整数的方法。该方法属于该类,并且必须与该类的对象一起使用。
tick(fps)
tick()
pygame.time.Clock
这可能因游戏而异,具体取决于它的设计方式,但您的目标值应该在 30 到 60 之间。请记住,如果您创建一个相当复杂和繁重的游戏,计算机可能无法很好地运行它在更高的帧。
例如:
FPS = 30
FramePerSec = pygame.time.Clock()
…
while True:
pygame.display.update()
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
FramePerSec.tick(FPS)
完整代码如下:
import pygame, sys
from pygame.localsimport *
# 初始化
pygame.init()
# 设置帧数
FPS =30
FramePerSec = pygame.time.Clock()
# 设置颜色对象
RED = (255, 0, 0)
GREEN = (0, 255, 0)
LIGHTGREEN = (0, 125, 0)
BLUE = (0, 0, 255)
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
# 设置 300 X 300像素显示窗口和标题
Screen = pygame.display.set_mode((300, 300))
Screen.fill(WHITE)
pygame.display.set_caption(“PyGame Demo”)
# 创建图形
pygame.draw.line(Screen, BLUE, (150, 130), (130, 170))
pygame.draw.line(Screen, BLUE, (150, 130), (170, 170))
pygame.draw.line(Screen, GREEN, (130, 170), (170, 170))
pygame.draw.circle(Screen, BLACK, (100, 50), 30)
pygame.draw.circle(Screen, BLACK, (200, 50), 30)
pygame.draw.rect(Screen, RED, (100, 200, 100, 50), 2)
pygame.draw.rect(Screen, BLACK, (110, 260, 80, 5))
while True:
pygame.display.update()
for eventin pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
FramePerSec.tick(FPS)
效果如下: