【Pygame 第2课】 游戏的本质

你小时候有没有玩过这样一种玩具:一块硬纸,一面画着一只鸟,一面画着一个笼子。硬纸下粘上一根细棒。用手来回转动细棒,让硬纸的两面快速交替出现,就会看见鸟被关在了笼子里。

这种现象被称为视觉暂留,又称余晖效应。人眼的性质使得光信号在进入之后,会保持一小段时间,这段时间大约是0.1~0.4秒。电影、动画便是利用这种现象得以实现,把一幅幅静态画面快速连续播放,形成看上去连续的活动画面。游戏也不例外。

回顾一下昨天的代码,你会注意到有一个while True的循环,注释为“游戏主循环”。这就是游戏的主体部分。每次循环都相当于是一张静态的画面,程序一直运行,画面就有了动态的效果。这个程序中还看不出,因为始终只有一张固定不动的背景图片。

与动画不同,游戏中不仅要把一幅幅画面播放出来,还需要处理玩家的操作与游戏中内容的交互。所以在这个while循环中,还要去接收玩家的输入,以及处理游戏中的各种逻辑判断、运动、碰撞等等。

在我们程序的主循环里,做了对退出事件的响应:

for event in pygame.event.get():

if event.type == pygame.QUIT:

#接收到退出事件后退出程序

pygame.quit()

exit()

然后把图像绘制到窗口中:

screen.blit(background, (0,0))

最后,把整个窗口画面更新:

pygame.display.update()

如果你看过泥土动画,那么就可以把整个游戏过程想象成拍摄泥土动画的过程:每一次,screen.blit()相当于去把人偶、布景移动一点点位置,pygame.display.update()则是按下快门拍下一帧新的画面。而if event.type == pygame.QUIT:就是在判断,导演是不是喊停收工了。这一切都由计算机在很短的时间内处理,以至于玩家感觉是连贯的。

尽管我们只是从简单的游戏做起,但在本质上,绝大多数的游戏都是相通的。

有些大型3D游戏需要在一次循环内做很多事情,需要进行复杂的物理运算、计算光线的照射效果、处理大量电脑角色的智能、网络信息通讯等。在配置不高的电脑上,这些计算花费的时间就多,游戏刷新画面的频率就变慢了。这也就是我们常听说“一个游戏的帧率低”的原因,这种时候你就会感到游戏不流畅。

面向零基础初学者的编程课

每天5分钟,轻松学编程

回复『 p 』查看python课程

回复『 g 』查看pygame课程

回复『 t 』查看习题

原文发布于微信公众号 - Crossin的编程教室(crossincode)

原文发表时间:2013-08-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玉树芝兰

如何用Python做舆情时间序列可视化?

如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧。

2922
来自专栏牛客网

奉献一波腾讯的面经!

6060
来自专栏老九学堂

与程序打交道的九年里,我的爱恨情仇...

一次做规划局的项目,规划局的职员很是钦佩地说:“你们真了不起,在电脑上敲敲键盘就能做出软件来。”

820
来自专栏SDNLAB

SDN实战团分享(十九):OpenDaylight在电信网络中的应用

大家好!首先自我介绍一下:我来自中国电信广州研究院,我和我的SDN小组是一支来自电信运营商的研发团队,主要从事一些预研性的研究和开发工作。大家可能是从最近的一本...

4197
来自专栏CDA数据分析师

【收藏】55 款可视化分析工具,优秀数据分析师必备!

俗话说的好:工欲善其事,必先利其器!一款好的工具可以让你事半功倍,尤其是在大数据时代,更需要强有力的工具通过使数据有意义的方式实现数据可视化,还有数据的可交互性...

3005
来自专栏华章科技

盘点56个最实用的大数据可视化分析工具

一、Excel Excel作为一个入门级工具,是快速分析数据的理想工具,也能创建供内部使用的数据图,但是Excel在颜色、线条和样式上课选择的范围有限,这也意味...

1521
来自专栏PPV课数据科学社区

使用 Python 创建 AI 比你想象的轻松

原文地址:https://blog.csdn.net/Lunaqi/article/details/76171702

1302
来自专栏施炯的IoT开发专栏

北京邮电大学微软技术俱乐部--技术部第一次集体活动

2008年10月22日傍晚6点,我早早来到了教三108,开始准备今天晚上我们技术部的第一次活动。在丁冬和刘坚的帮助下,我顺利地将笔记本和设备部署好,7点整,活动...

2698
来自专栏SDNLAB

关于DCI中传输网络的一些探讨

前言 关于DCI技术的探索,最近很是热门,尤其是在SDN-WAN被大家重视起来后,关于DCI技术的介绍文章层出不穷。本文着重对DCI网络中传输网络部分的技术和现...

3847
来自专栏web前端教室

好多东西都要学,而且排名不分先后

记得以前有个同学问过我,HTML,CSS,JS,jQuery,这些先学哪个呢?它们的顺序是什么?我回答他说,就是先学HTML,再学CSS,再学JS或JQ,后来我...

2086

扫码关注云+社区