《Python和Pygame游戏开发指南》——2.18 帧速率和pygame.time.Clock对象

简介:

本节书摘来自异步社区《Python和Pygame游戏开发指南》一书中的第2章,第2.18节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.18 帧速率和pygame.time.Clock对象

帧速率(frame rate)或刷新速率(refresh rate)是程序每秒钟绘制的图像的数目,用FPS或帧/秒来度量(在计算机显示器上,FPS常见的名称是赫兹。很多显示器的帧速率是60Hz,或者说每秒60帧)。视频游戏中,较低的帧速率会使得游戏看上去抖动或卡顿。如果游戏包含的代码太多了,以至于无法运行来频繁地绘制到屏幕上,那么,FPS会下降。但是,本书中的游戏都足够简单,甚至在较旧的计算机上也不会有问题。

pygame.time.Clock对象可以帮助我们确保程序以某一个最大的FPS运行。Clock对象将会在游戏循环的每一次迭代上都设置一个小小的暂停,从而确保游戏程序不会运行得太快。如果没有这些暂停,游戏程序可能会按照计算机所能够运行的速度去运行。这对玩家来说往往太快了,并且计算机越快,它们运行游戏也就越快。在游戏循环中调用一个Clock对象的tick()方法,可以确保不管计算机有多快,游戏都按照相同的速度运行。catanimation.py程序的第7行创建了Clock对象。


screenshot

每次游戏循环的最后,在调用了pygame.display.update()之后,应该调用Clock对象的tick()方法。根据前一次调用tick()(这在游戏循环的前一次迭代的末尾进行)之后经过了多长时间,来计算需要暂停多长时间(第一次调用tick()方法的时候,根本没有暂停)。在动画程序中,调用tick()是在第47行进行的,作为游戏循环中的最后一条指令。

你需要知道的是在游戏循环的每一次迭代中,应该在循环的末尾调用tick()方法一次。通常,这刚好在调用了pygame.display.update()之后进行。


screenshot

尝试修改FPS常量变量,以不同的帧速率来运行相同的游戏。将其设置为一个较低的值,就会使得程序运行得较慢。将其设置为一个较高的值,就会让程序运行得较快。

相关文章
|
16天前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
25 2
|
30天前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
41 3
|
2月前
|
JSON 开发工具 git
基于Python和pygame的植物大战僵尸游戏设计源码
本项目是基于Python和pygame开发的植物大战僵尸游戏,包含125个文件,如PNG图像、Python源码等,提供丰富的游戏开发学习素材。游戏设计源码可从提供的链接下载。关键词:Python游戏开发、pygame、植物大战僵尸、源码分享。
|
3月前
|
存储 缓存 Java
深度解密 Python 虚拟机的执行环境:栈帧对象
深度解密 Python 虚拟机的执行环境:栈帧对象
78 13
|
3月前
|
索引 Python
Python 对象的行为是怎么区分的?
Python 对象的行为是怎么区分的?
30 3
|
3月前
|
Python
深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
深入解析 Python 中的对象创建与初始化:__new__ 与 __init__ 方法
27 1
|
3月前
|
缓存 Java 程序员
一个 Python 对象会在何时被销毁?
一个 Python 对象会在何时被销毁?
54 2
|
3月前
|
API Python 容器
再探泛型 API,感受 Python 对象的设计哲学
再探泛型 API,感受 Python 对象的设计哲学
27 2
|
3月前
|
API Python
当调用一个 Python 对象时,背后都经历了哪些过程?
当调用一个 Python 对象时,背后都经历了哪些过程?
30 2
|
3月前
|
数据采集 前端开发 Python
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
97 0