Pygame Time时间控制的具体使用详解


Posted in Python onNovember 17, 2021

pygame.time 时间控制模块,是 Pygame 中使用频率较高的模块,其主要功能是管理时间和游戏帧数率(即 FPS)。

时间在游戏开发中承担着非常重要的作用,比如释放某个技能所消耗的时间,或者播放动画、声音的持续时间,这些都需要时间来管理。time 模块另外一个重要作用是控制游戏帧数率(即 FPS),它是评价游戏画面是否流畅的关键指标。在一般情况下,计算机的 FPS 都能达到 60帧/s 的速度,这足够我们使用,如果当帧数小于 30 的时候,游戏画面就会变得卡顿。

注意,在 Pygame 中时间以毫秒为单位(1秒=1000毫秒),这样会使游戏的设计更为精细。

1) 游戏暂停

Pygame.time 模块提供了以下常用方法,如下表所示:

 

方法 说明
pygame.time.get_ticks()  以毫秒为单位获取时间
pygame.time.wait() 使程序暂停一段时间
pygame.time.set_timer() 创建一个定时器,即每隔一段时间,去执行一些动作
pygame.time.Clock() 创建一个时钟对象来帮我们确定游戏要以多大的帧数运行

下面看一组简单的示例:

import pygame
pygame.init()
screen = pygame.display.set_mode((500,500))
pygame.display.set_caption('c语言中文网')
# 获取以毫秒为单位的时间
t = pygame.time.get_ticks() #该时间指的从pygame初始化后开始计算,到调用该函数为止
t1 =pygame.time.wait(3000) #暂停游戏3000毫秒
print(t1)
#暂停t1时间后,加载图片
image_surface = pygame.image.load("C:/Users/Administrator/Desktop/c-net.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 秒后才会加载图片

2) 设置游戏FPS

若想设置游戏的帧数率(FPS)可以通过 Clock() 方法来实现,该对象提供了以下常用方法:

 

方法 说明
pygame.time.Clock.tick() 更新clock对象
pygame.time.Clock.get_time() 获取上一个tick中的时间
pygame.time.Clock.get_fps() 计算clock对象的帧率

下面看一组简单的应用示例:

import pygame
pygame.init()
screen = pygame.display.set_mode((500,300))
pygame.display.set_caption('c语言中文网')
# 获取以毫秒为单位的时间
t = pygame.time.get_ticks() #该时间指的从pygame初始化后开始计算,到调用该函数为止
t1 =pygame.time.delay(3000) #暂停游戏3000毫秒
print(t1)
#暂停t1时间后,加载图片
image_surface = pygame.image.load("C:/Users/Administrator/Desktop/c-net.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()

注意:FPS(游戏帧率)影响效果只有在动态图时才能显现出来,不过无论静态图还是动态图,它们的使用规则都是一样的。

到此这篇关于Pygame Time时间控制的具体使用详解的文章就介绍到这了,更多相关Pygame Time时间控制内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
浅谈MySQL中的触发器
May 05 Python
Python进阶篇之字典操作总结
Nov 16 Python
利用Python如何生成hash值示例详解
Dec 20 Python
pycharm+django创建一个搜索网页实例代码
Jan 24 Python
python使用多进程的实例详解
Sep 19 Python
Python常用特殊方法实例总结
Mar 22 Python
python使用正则来处理各种匹配问题
Dec 22 Python
python判断链表是否有环的实例代码
Jan 31 Python
在 Python 中接管键盘中断信号的实现方法
Feb 04 Python
Python处理mysql特殊字符的问题
Mar 02 Python
Keras在mnist上的CNN实践,并且自定义loss函数曲线图操作
May 25 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 Python
Pygame如何使用精灵和碰撞检测
Pygame Event事件模块的详细示例
Nov 17 #Python
利用python做数据拟合详情
Python Matplotlib库实现画局部图
Nov 17 #Python
python实现局部图像放大
Pygame Draw绘图函数的具体使用
Pygame Rect区域位置的使用(图文)
Nov 17 #Python
You might like
建立动态的WML站点(二)
2006/10/09 PHP
php强制下载类型的实现代码
2011/04/21 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
php实现评论回复删除功能
2017/05/23 PHP
jquery时间下拉框小例子
2013/04/15 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
[07:38]2014DOTA2国际邀请赛 Newbee顺利挺进胜者组赛后专访
2014/07/15 DOTA
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中文编码问题小结
2014/09/28 Python
python概率计算器实例分析
2015/03/25 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
浅谈python标准库--functools.partial
2019/03/13 Python
python实现雪花飘落效果实例讲解
2019/06/18 Python
Django 拆分model和view的实现方法
2019/08/16 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
Otel.com:折扣酒店预订
2017/08/24 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
优秀毕业生推荐信
2013/11/02 职场文书
促销活动策划方案
2014/01/12 职场文书
表决心的诗句大全
2014/03/11 职场文书
微笑服务标语
2014/06/24 职场文书
小学教师师德整改措施
2014/09/29 职场文书
西岭雪山导游词
2015/02/06 职场文书
经费申请报告
2015/05/15 职场文书
简单介绍 http请求响应参数、无连接无状态、MIME、状态码、端口、telnet、curl
2021/03/31 HTML / CSS
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL