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 相关文章推荐
Python获取远程文件大小的函数代码分享
May 13 Python
用Python生成器实现微线程编程的教程
Apr 13 Python
Scrapy-redis爬虫分布式爬取的分析和实现
Feb 07 Python
tf.truncated_normal与tf.random_normal的详细用法
Mar 05 Python
Python基于mysql实现学生管理系统
Feb 21 Python
在Keras中实现保存和加载权重及模型结构
Jun 15 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 Python
Python 实现键盘鼠标按键模拟
Nov 18 Python
如何用Django处理gzip数据流
Jan 29 Python
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
Apr 12 Python
Django集成富文本编辑器summernote的实现步骤
May 31 Python
Python-OpenCV教程之图像的位运算详解
Jun 21 Python
Pygame如何使用精灵和碰撞检测
Pygame Event事件模块的详细示例
Nov 17 #Python
利用python做数据拟合详情
Python Matplotlib库实现画局部图
Nov 17 #Python
python实现局部图像放大
Pygame Draw绘图函数的具体使用
Pygame Rect区域位置的使用(图文)
Nov 17 #Python
You might like
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
2019/05/09 PHP
PHP7新特性
2021/03/09 PHP
javascript天然的迭代器
2010/10/29 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
vue-cli基础配置及webpack配置修改的完整步骤
2019/10/20 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
python求素数示例分享
2014/02/16 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
简单了解python中对象的取反运算符
2019/07/01 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
Python实现密码薄文件读写操作
2019/12/16 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
Python小白学习爬虫常用请求报头
2020/06/03 Python
SCDKey德国:全球领先的数字游戏市场
2019/04/09 全球购物
The Hut英国:英国领先的豪华在线百货商店
2019/07/26 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
日本语毕业生自荐信
2014/02/01 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
tomcat下部署jenkins的方法
2022/05/06 Servers
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang