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 json 错误xx is not JSON serializable解决办法
Mar 15 Python
python连接数据库的方法
Oct 19 Python
python 定时修改数据库的示例代码
Apr 08 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
原生python实现knn分类算法
Oct 24 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
通过Python实现Payload分离免杀过程详解
Jul 13 Python
浅析Python打包时包含静态文件处理方法
Jan 15 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 Python
Pygame如何使用精灵和碰撞检测
Pygame Event事件模块的详细示例
Nov 17 #Python
利用python做数据拟合详情
Python Matplotlib库实现画局部图
Nov 17 #Python
python实现局部图像放大
Pygame Draw绘图函数的具体使用
Pygame Rect区域位置的使用(图文)
Nov 17 #Python
You might like
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
php ZipArchive实现多文件打包下载实例
2019/10/31 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
PHP7新特性
2021/03/09 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
jQuery niceScroll滚动条错位问题的解决方法
2018/02/03 jQuery
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
解决vue+element 键盘回车事件导致页面刷新的问题
2018/08/25 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
jQuery实现增删改查
2020/12/22 jQuery
python zip文件 压缩
2008/12/24 Python
python使用in操作符时元组和数组的区别分析
2015/05/19 Python
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
COSETTE官网:奢华,每天
2020/03/22 全球购物
园林设计师自荐信
2013/11/18 职场文书
殡葬服务心得体会
2014/09/11 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
2015年药房工作总结
2015/04/25 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB