最近没有更新博客,原因之一就是在读《Pro Android Games》,其中一些样例游戏实在太有意思,忍不住又山寨一番,在Chapter3中介绍了第一个叫做Space Blaster的游戏,游戏规则蛮简单,就是你控制飞船躲过或者打击流星石。下面是一个游戏的截图:
工程总共有三个类,SpaceBlasterActivity、ArcadeGame和SpaceBlasterGame。第一个类是Android的Activity类;第二类继承了LinearLayout类,主要实现了onLayout函数(当View要为所有子对象分配大小和位置时,调用此方法),也就是说可以将游戏的初始化方法和产生周期性线程(模拟周期性的帧)放在这里。第三个SpaceBlasterGame类继承了ArcadeGame类,游戏的所有逻辑都在这里实现,例如各个Sprite之间的碰撞和显示。类的结构图如下:
接下来上一下这三个类之间的UML图吧,已经画了,不用怪可惜(⊙﹏⊙b汗):
这里不会说明所有的函数,我的代码在这里,《Pro Android Games》一书网上也有它的示例的代码。这里主要说明几点个人觉得比较重要的地方:
1、 构造方法必须有两个参数的那个,否则main.xml无法解析;
2、 Bullets和Meteors都是用数组记录信息的,一开始用ArrayList容器,游戏玩玩就会崩溃;
然后就是细节问题,这个游戏很简单,没有算法,不够建议还是自己去实现一下,在这个过程中会发现很多细节点的!