前言:
BOSS系列的日志,建议在看了前面的入门知识后再看,没有一定的基础,这些看起来会很累。精灵组的层管理,确实太强大了。
pygame提供了精灵sprite这个类来管理游戏的各个元素。例如子弹、飞机、爆炸效果(一连串动态图片)……等都可以是一个精灵,所有的精灵默认都在同一个层 0 层里。文档里说明:You can set the default layer through kwargs using 'default_layer' and an integer for the layer. The default layer is 0.
为什么要用层这个概念来编写呢?
1.默认方式下,pygame绘制的顺序是精灵添加的顺序,例如先加载背景,再加载飞机,再加载子弹,那么绘制的顺序就是背景、飞机、子弹。如果先加载飞机、子弹,再加载背景,那么你将只能看到背景图。
很多软件里都有层这个概念,例如photoshop。pygame里的层号用数字表示,1、2、3、4……层,也可以是负数。层号越高,优先级越高,例如把背景层设置为 -1,飞机为 1,子弹为 2,那么不管你什么绘图顺序,子弹拥有在场景的顶层,不会被背景遮挡。
2.单个的精灵只能存在单张image,当向用动态的飞机,动态的子弹时,只能编写不是精灵的单独的类或者函数实现。维护起来很麻烦。而用层来管理就很轻松了。
3.既然pygame提供了层管理的这个概念,何不好好用用。
4.cocos2d 的python版里,也专门用了层来管理,好东西值得借鉴。
下面开始构建游戏的基本框架。
用类来