Android坦克大战游戏设计解析二
Java ME中提供了一个Game API (javax.microedition.lcdui.game).大大方便了程序员在移动平台上开发复杂游戏。一般的游戏可以分为游戏人物及背景,可以将游戏场景分成多个层次。在Java ME Game API中提供了几个类。
Layer类,该类为一抽象类,提供了游戏人物及背景的层次的基本构架,它代表了游戏场景中一个可视化的元素,如游戏人物(Sprite)或是分片背景(TiledLayer).
Sprite类,为一个基本动画游戏人物,它可以显示多个动画帧中其中一帧,比如人向前,向后,向左,向右,坦克大战游戏中各种坦克就是一个sprite类对象,它可以显示坦克向四个方向移动的图象,并可很容易实现动态效果,如坦克履带移动的动态效果。它也支持了各种碰撞检测,比如子弹击中坦克,或是打中砖块等等。
TiledLayer类,一般用作显示游戏背景,为了能显示范围较大的背景,一般游戏背景地图可以通过小的图片拼接而成。TiledLayer用于实现由一个二维cell (分片地图)组成背景,这个类也提供了动态背景的支持,比如,坦克大战背景中水面的动态效果。
LayerManager 类用于管理多个Layer ,sprite,及TiledLayer都是Layer的子类。在坦克大战游戏中,LayerManager用来管理坦克及背景,TiledLayer 及sprites在LayerManager管理下有层次的关系(Z-Order),前面的Layer会遮挡后面的Layer.
而Andorid中没有提供 Game API,如果大家看过Android例子中snake的实现,其中 TileView的功能类似于 Game API中TiledLayer. 为了使减少移植工作,第一步是将Java ME中 Game API移植到 Android平台。
移植是基于microemulator中相应代码,移植工作量不大。在后面会提供移植后源码。
Sprite类,为一个基本动画游戏人物,它可以显示多个动画帧中其中一帧,比如人向前,向后,向左,向右,坦克大战游戏中各种坦克就是一个sprite类对象,它可以显示坦克向四个方向移动的图象,并可很容易实现动态效果,如坦克履带移动的动态效果。它也支持了各种碰撞检测,比如子弹击中坦克,或是打中砖块等等。
TiledLayer类,一般用作显示游戏背景,为了能显示范围较大的背景,一般游戏背景地图可以通过小的图片拼接而成。TiledLayer用于实现由一个二维cell (分片地图)组成背景,这个类也提供了动态背景的支持,比如,坦克大战背景中水面的动态效果。
LayerManager 类用于管理多个Layer ,sprite,及TiledLayer都是Layer的子类。在坦克大战游戏中,LayerManager用来管理坦克及背景,TiledLayer 及sprites在LayerManager管理下有层次的关系(Z-Order),前面的Layer会遮挡后面的Layer.
而Andorid中没有提供 Game API,如果大家看过Android例子中snake的实现,其中 TileView的功能类似于 Game API中TiledLayer. 为了使减少移植工作,第一步是将Java ME中 Game API移植到 Android平台。
移植是基于microemulator中相应代码,移植工作量不大。在后面会提供移植后源码。