主要内容 #
- 模块介绍
- 模块参数说明
- 使用示例
收获 #
会使用time模块对游戏进行简单的时间控制。
1.模块介绍 #
pygame.time 时间控制模块,是 Pygame 中使用频率较高的模块,其主要功能是管理时间和游戏帧数率(即 FPS)。
时间在游戏开发中承担着非常重要的作用,比如释放某个技能所消耗的时间,或者播放动画、声音的持续时间,这些都需要时间来管理。
time 模块另外一个重要作用是控制游戏帧数率(即 FPS),它是评价游戏画面是否流畅的关键指标。在一般情况下,计算机的 FPS 都能达到 60帧/s 的速度,这足够我们使用,如果当帧数小于 30 的时候,游戏画面就会变得卡顿。
注意,在 Pygame 中时间以毫秒为单位(1秒=1000毫秒),这样会使游戏的设计更为精细。
2.模块参数说明 #
1) 游戏暂停
Pygame.time 模块提供了以下常用方法,如下表所示:
举例具体使用如下:
t1 = pygame.time.wait(3000) # 暂停游戏3000毫秒
2) 设置游戏FPS
若想设置游戏的帧数率(FPS)可以通过 Clock() 方法来实现,该对象提供了以下常用方法:
举例具体使用如下:
# 创建时钟对象(控制游戏的FPS) clock = pygame.time.Clock() # 通过时钟对象,指定循环频率,每秒循环60次 clock.tick(60)
3.使用示例 #
下面看一组简单的游戏暂停示例:
所用logo.png图片,点击下载
import pygame pygame.init() screen = pygame.display.set_mode((500, 500)) pygame.display.set_caption('大师码') # 获取以毫秒为单位的时间 t = pygame.time.get_ticks() # 该时间指的从pygame初始化后开始计算,到调用该函数为止 t1 = pygame.time.wait(3000) # 暂停游戏3000毫秒 print(t1) # 暂停t1时间后,加载图片 image_surface = pygame.image.load("C:/Users/91566/Desktop/dashima/logo.png") while True: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() screen.blit(image_surface, (0, 0)) pygame.display.update()
上述程序在暂停 3 秒后才会加载图片,运行结果如下:
拓展练习:让图片暂停5秒后再出现。
下面再看一组简单的设置游戏FPS应用示例:
import pygame pygame.init() screen = pygame.display.set_mode((500, 300)) pygame.display.set_caption('大师码') # 获取以毫秒为单位的时间 t = pygame.time.get_ticks() # 该时间指的从pygame初始化后开始计算,到调用该函数为止 t1 = pygame.time.delay(3000) # 暂停游戏3000毫秒 print(t1) # 暂停t1时间后,加载图片 image_surface = pygame.image.load("C:/Users/91566/Desktop/dashima/logo.png") # 创建时钟对象(控制游戏的FPS) clock = pygame.time.Clock() while True: # 通过时钟对象,指定循环频率,每秒循环60次 clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT: exit() screen.blit(image_surface, (0, 0)) pygame.display.update()
拓展练习:指定循环频率,使其每秒循环1000次.
注意:FPS(游戏帧率)影响效果只有在动态图时才能显现出来,不过无论静态图还是动态图,它们的使用规则都是一样的。
小结 #
本节主要介绍了pygame.time模块的一些常用方法,并给出实例具体学习了 pygame.time.get_ticks() 以毫秒为单位获取时间、pygame.time.wait()使程序暂停一段时间、pygame.time.Clock.tick()更新clock对象的使用方法。
练习 #
1.暂停1秒后加载图片。
2.创建一个定时器,即每隔1秒,将图片向右移动5个偏移量。
3.创建时钟对象,控制游戏的FPS,通过时钟对象,指定循环频率,每秒循环30次。