本节书摘来自异步社区《Python和Pygame游戏开发指南》一书中的第2章,第2.17节,作者[美]Al Sweigart(斯维加特), 李强 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.17 动画
既然知道了如何让Pygame框架绘制到屏幕上,让我们来学习一下如何制作动画。只有静止的、不能移动的图像的游戏将会相当无聊(我的游戏“Look At This Rock”的销售情况就很令人失望)。动画的图像是做如下的事情所产生的结果:在屏幕上绘制图像,然后隔几秒后在屏幕上绘制一幅略为不同的图像。想象一下程序的窗口有6个像素宽和1个像素高,所有的像素都是白色,而只有位于4,0的一个像素是黑色,看上去如图2-8所示。
如果修改了窗口使得3,0的像素成为黑色,而4,0成为白色,看上去将会如图2-9所示。
对于用户来说,看上去好像黑色的像素向左边“移动”了。如果重新绘制窗口,使得2,0的像素成为黑色,那么,看上去好像是黑色的像素继续向左移动了,如图2-10所示。
看上去好像是黑色的像素在移动,但这只是错觉。对于计算机来说,它只是显示了3幅不同的图像,而每一幅图像上恰好都有一个黑色的像素。考虑一下,如果如图2-11所示的3幅图像快速出现在屏幕上。
对于用户来说,看上去像是猫在朝着松鼠的方向移动。但是,对于计算机来说,它们只是一堆的像素。制作看上去逼真的动画的技巧在于让程序将一幅图片绘制到窗口上,等待数秒钟,然后绘制一幅略微不同的图片。
如下的示例程序展示了一个简单的动画。在IDLE的文件编辑器中输入这段代码,并且将其保存为catanimation.py 。还需要将图像文件cat.png放在与catanimation.py 文件相同的目录下。可以从http://invpy.com/cat.png 下载这个图像。从http://invpy.com/catanimation.py 可以找到这段代码。
看一下,动画的猫实现了。这个程序比我的游戏“Look At This Rock 2: A Different Rock”在商业上要成功很多。