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简单进程锁代码实例
Apr 27 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
新手如何快速入门Python(菜鸟必看篇)
Jun 10 Python
Python实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
浅谈pyqt5中信号与槽的认识
Feb 17 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
用Python抢火车票的简单小程序实现解析
Aug 14 Python
Python 实现数组相减示例
Dec 27 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
Python实现粒子群算法的示例
Feb 14 Python
python实现MD5进行文件去重的示例代码
Jul 09 Python
Pygame如何使用精灵和碰撞检测
Pygame Event事件模块的详细示例
Nov 17 #Python
利用python做数据拟合详情
Python Matplotlib库实现画局部图
Nov 17 #Python
python实现局部图像放大
Pygame Draw绘图函数的具体使用
Pygame Rect区域位置的使用(图文)
Nov 17 #Python
You might like
咖啡历史、消费和行业趋势
2021/03/03 咖啡文化
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
PHP设计模式之建造者模式定义与用法简单示例
2018/08/13 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
学习YUI.Ext基础第一天
2007/03/10 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
vue中如何自定义右键菜单详解
2020/12/08 Vue.js
Django文件存储 自己定制存储系统解析
2019/08/02 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
html5 canvas 简单画板实现代码
2012/01/05 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
Footshop法国:购买运动鞋
2020/01/19 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
平面设计的岗位职责
2013/11/08 职场文书
服务承诺书格式
2014/05/21 职场文书
力学专业求职信
2014/07/23 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
2014年行政人事工作总结
2014/12/09 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
Pycharm 如何设置HTML文件自动补全代码或标签
2021/05/21 Python
Python3 类型标注支持操作
2021/06/02 Python
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python
MySQL七大JOIN的具体使用
2022/02/28 MySQL