有了游戏所需的图象及声音资源后,下面就可以开始定义游戏中的各种角色。为了方便起见,坦克大战游戏中定义了一个角色接口。
public interface Actor{ //////////////////////////////////////////////////////////////////////////// /** * Operation be done in each tick. */ void tick(); }该接口有一个tick方法,为每个游戏帧该角色所要完成的动作,比如说背景可能要更换图形以形成动画效果(如水面波浪)。坦克可以完成前面一步,子弹飞行等等。
坦克大战游戏中定义了背景类BattleField ,子弹Bullet,各种坦克类(Tank, PlayTank, EnemyTank, FastTank, HeavyTank, SimpleTank, PlayerTank,SmartTank) , 升级法宝Powerup,以及动态显示的分数Score类,都实现了Actor接口。
而这些角色类同时又是Game API中 Layer的子类。因些游戏逻辑比较简单,下面代码是GameScene中线程Run的方法,为游戏进行时主线程
而其中的tick()方法就是调用游戏中所有角色的tick()方法:
private void tick(){ for(int i=0;i<TOTALLAYERS;I++){ Layer layer=layerManager.getLayerAt(i); if(layer.isVisible()){ Actor actor=(Actor)layer; actor.tick(); } } applyGameLogic(); }