返回介绍

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

发布于 2025-02-18 12:55:26 字数 996 浏览 0 评论 0 收藏 0

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

pic

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文