离线下载
PDF版 ePub版

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

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

本篇介绍坦克大战游戏中的主角,坦克类。游戏中坦克种类有多种,但主要特性大同小异。下图为游戏中定义的坦克类层次图。

pic

Tank 为所有坦克类的基类,它定义了几个主要的方法
think() 思考,如有 AI,算法在这里实现,对于简单坦克 SimpleTank,可能随机选择一步,而对 SmartTank 来说,向靠近玩家坦克的方向前进一步。
drive() 根据 Think 决定前进一步
shoot() 根据当前条件决定发射一棵子弹。PlayerTank 由玩家和可同时发射的子弹来控制,Enemy 坦克一般随机控制是否要发射子弹。
基类每个游戏帧的操作如下

/**
 * Operation be done in each tick.
 */
public void tick(){
 if(isVisible()){
  think();
  drive();
  shoot();
 }
}

派生类中 PlayerTank 和 SmartTank 逻辑相对复杂一些,FastTank,和 HeavyTank 都是 SimpleTank 的子类,FastTank 行驶速度较快,而 HeavyTank 可以承受多次子弹才会被击毁。
PlayerTank 中需要处理玩家按键事件,用于控制上下左右以及发射子弹,还要处理升级功能,如吃到增加宝贝。它的 public void upgrade(Powerup powerup) 用于处理升级功能。
而在 SmartTank 的 Think 方法,它要根据玩家坦克当前位置算出下一步的方向,以便可以不断向玩家坦克靠近,并发射子弹试图击毁玩家坦克。
这些坦克类都定义在 om.pstreets.game.battlecity.actors.tank,代码中有较详细的注释,这里不详细一一说明了。