在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ Android 坦克大戰(zhàn)游戲設(shè)計(jì)解析七
Android 坦克大戰(zhàn)游戲設(shè)計(jì)解析八
Android 坦克大戰(zhàn)游戲設(shè)計(jì)解析一
Android 坦克大戰(zhàn)游戲設(shè)計(jì)解析五
Android 坦克大戰(zhàn)游戲設(shè)計(jì)解析六
Android 坦克大戰(zhàn)游戲設(shè)計(jì)解析七
Android 坦克大戰(zhàn)游戲設(shè)計(jì)解析二
Android 坦克大戰(zhàn)游戲設(shè)計(jì)解析三
Android 坦克大戰(zhàn)游戲設(shè)計(jì)解析四

Android 坦克大戰(zhàn)游戲設(shè)計(jì)解析七

本篇介紹坦克大戰(zhàn)游戲中的主角,坦克類。游戲中坦克種類有多種,但主要特性大同小異。下圖為游戲中定義的坦克類層次圖。

http://wiki.jikexueyuan.com/project/android-game-design/images/17.jpg" alt="pic" />

Tank 為所有坦克類的基類,它定義了幾個(gè)主要的方法
think() 思考,如有 AI,算法在這里實(shí)現(xiàn),對(duì)于簡單坦克 SimpleTank,可能隨機(jī)選擇一步,而對(duì) SmartTank 來說,向靠近玩家坦克的方向前進(jìn)一步。
drive() 根據(jù) Think 決定前進(jìn)一步
shoot() 根據(jù)當(dāng)前條件決定發(fā)射一棵子彈。PlayerTank 由玩家和可同時(shí)發(fā)射的子彈來控制,Enemy 坦克一般隨機(jī)控制是否要發(fā)射子彈。
基類每個(gè)游戲幀的操作如下

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

派生類中 PlayerTank 和 SmartTank 邏輯相對(duì)復(fù)雜一些,F(xiàn)astTank,和 HeavyTank 都是 SimpleTank 的子類,F(xiàn)astTank 行駛速度較快,而 HeavyTank 可以承受多次子彈才會(huì)被擊毀。
PlayerTank 中需要處理玩家按鍵事件,用于控制上下左右以及發(fā)射子彈,還要處理升級(jí)功能,如吃到增加寶貝。它的 public void upgrade(Powerup powerup) 用于處理升級(jí)功能。
而在 SmartTank 的 Think 方法,它要根據(jù)玩家坦克當(dāng)前位置算出下一步的方向,以便可以不斷向玩家坦克靠近,并發(fā)射子彈試圖擊毀玩家坦克。
這些坦克類都定義在 om.pstreets.game.battlecity.actors.tank,代碼中有較詳細(xì)的注釋,這里不詳細(xì)一一說明了。