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

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对象。

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

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

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

时间: 2024-10-31 01:09:34

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

《Python和Pygame游戏开发指南》——第2章 Pygame基础知识 2.1 GUI vs. CLI

第2章 Pygame基础知识 Python带有诸如random.math或time这样的几个模块,它们为程序提供额外的功能,同样,Pygame框架也包含了几个模块,其功能包括绘制图形.播放声音.处理鼠标输入等. 本章将介绍Pygame所提供的基本模块和功能,并且假设你已经了解Python编程的基础知识.如果你对理解一些编程概念感到困难,可以阅读我的<Invent Your Own Computer Games with Python>一书,这本书的目标读者是程序设计的完全初学者. <In

《Python和Pygame游戏开发指南》——2.5 pygame.event.Event对象

2.5 pygame.event.Event对象 任何时候,当用户做了诸如按下一个按键或者把鼠标移动到程序的窗口之上等几个动作之一(在本章后面会列出这些动作),Pygame库就会创建一个pygame.event.Event对象来记录这个动作,也就是"事件"(这种叫作Event的对象,存在于event模块中,该模块本身位于pygame模块之中).我们可以调用pygame.event.get()函数来搞清楚发生了什么事件,该函数返回pygame.event.Event对象(为了简单起见,我

《Python和Pygame游戏开发指南》——2.16 pygame.display.update()函数

2.16 pygame.display.update()函数 在调用了绘制函数以便让显示Surface对象看上去是你想要的方式之后,必须调用pygame.display.update()让显示Surface真正地出现在用户的显示器上. 必须记住的一件事情是pygame.display.update()将使得显示Surface,即通过调用pygame.display.set_mode()而返回的Surface对象,出现在屏幕上.如果想要让其他Surface对象上的图像出现在屏幕上,必须使用blit

《Python和Pygame游戏开发指南》——2.15 pygame.PixelArray对象

2.15 pygame.PixelArray对象 遗憾的是没有单个的函数可以调用来设置一个单个像素的颜色(除非你使用相同的起点和终点来调用pygame.draw.line())1.在向一个Surface对象绘制之前和之后,Pygame框架需要在幕后运行一些代码.如果它必须针对想要设置的每一个像素来做这些事情,程序将会运行得慢很多(根据我的快速测试,用这种方式绘制像素,所需时间会是原来的两到三倍). 相反,应该创建一个Surface对象的pygame.PixelArray对象(我们后面将其简称为P

《Python和Pygame游戏开发指南》——2.12 pygame.Color对象

2.12 pygame.Color对象 你需要知道如何表示一种颜色,因为Pygame的绘制函数需要一种方式来知道你想要使用何种颜色进行绘制.3个整数或4个整数的一个元组是一种方式.另一种方式是一个pygame.Color对象.你可以调用pygame.Color()构造函数,并且传入3个整数或4个整数,来创建Color对象.可以将这个Color对象存储到变量中,就像可以将元组存储到变量中一样.尝试在交互式shell中输入如下的内容. Pygame中的任何绘制函数(我们将会学习一些),如果有一个针对

《Python和Pygame游戏开发指南》——导读

前 言 你好!本书将教你如何使用Python语言和Pygame框架(也叫作Pygame库)来开发图形化的计算机游戏.Pygame使得开发2D图形程序变得很容易.Python和Pygame框架都可以从http://python.org和http://pygame.org 免费下载.你只需要有计算机和这本书,就可以开始开发自己的游戏了. 本书是一本中级编程图书.如果你完全是初次接触编程,你可能需要努力阅读源代码示例并搞清楚程序如何工作.然而,如果你此前学习过如何使用Python编程,这将会容易一些.

《Python和Pygame游戏开发指南》——1.7 安装Pygame

1.7 安装Pygame Pygame不是Python所附带的.和Python一样,Pygame也是可以免费使用的.你必须下载并安装Pygame,这与下载和安装Python解释器一样容易.在Web浏览器中,访问http://pygame.org 并且在该Web站点左边的"Downloads"上点击.本书假设你使用的是Windows操作系统,但是Pygame在每种操作系统上的工作方式都是相同的.你需要针对自己的操作系统以及所安装的Python版本,下载相应的Pygame安装程序. 你不需

《Python和Pygame游戏开发指南》——2.2 使用Pygame的Hello World程序源代码

2.2 使用Pygame的Hello World程序源代码 我们用Pygame开发的第一个程序,是在屏幕上显示一个带有"Hello World"的窗口的小程序.通过点击IDLE的File菜单,然后选择New Window,打开一个新的文件编辑器.在IDLE的文件编辑器中,输入如下的代码并将其保存为blankpygame.py .然后,按下F5键或者从文件编辑器顶部的菜单选择Run > Run Module,运行该程序. 记住,不要输入每一行开始处的行号和句点(那些只是为了方便在本

《Python和Pygame游戏开发指南》——2.22 播放声音

2.22 播放声音 播放存储在声音文件中的声音,甚至比显示图像文件中的图像还要简单.首先,必须通过调用pygame.mixer.Sound()构造函数,来创建一个pygame.mixer.Sound对象(后面我们将其简称为Sound对象).它接受一个字符串参数,这是声音文件的文件名.Pygame可以加载WAV.MP3或OGG文件.http://invpy.com/formats 介绍了这些声音文件格式的区别. 要播放声音,调用Sound对象的play()方法.如果想要立即停止Sound对象播放,