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

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

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,代码中有较详细的注释,这里不详细一一说明了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值