离线下载
PDF版 ePub版

引路蜂 · 更新于 2018-11-28 11:00:43

Android 坦克大战游戏设计解析二

Java ME 中提供了一个 Game API (javax.microedition.lcdui.game)。大大方便了程序员在移动平台上开发复杂游戏。一般的游戏可以分为游戏人物及背景,可以将游戏场景分成多个层次。在 Java ME Game API 中提供了几个类。

pic

  • 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 中相应代码,移植工作量不大。在后面会提供移植后源码。