基于Android平台的星际射击游戏的设计与实现(8)
资料介绍:
public void LogicView(){
if(timer%pinglv == 0){
switch(gongjili){
case 0:
bullet = new PlanePaodan(plane.planex+plane.planewidth/3,
plane.planey,power,1);
bullets.add(bullet);
break;
case 1:
bullet = new PlanePaodan(plane.planex+plane.planewidth/3,
plane.planey,power,1);
[资料来源:http://doc163.com]
bullets.add(bullet);
bullet = new PlanePaodan(plane.planex+plane.planewidth/3,
plane.planey,power+1,0);
bullets.add(bullet);
bullet = new PlanePaodan(plane.planex+plane.planewidth/3,
plane.planey,power+2,2);
bullets.add(bullet);
break;
case 2:break; [资料来源:Doc163.com]
}
}
if(ebullet!=null){
Vector<EnemyPaodan> deletes = new Vector<EnemyPaodan>();
for(EnemyPaodan eb:ebullets){
if(eb.paodanx<0||eb.paodanx>windowsWidth||eb.paodany>windowsHeight){
deletes.add(eb);
eb = null;
}
}
ebullets.removeAll(deletes);
}
[资料来源:http://Doc163.com]
}
}
在主界面中,飞机的爆炸效果如图5-4,Boss出现效果如图5-5,游戏结束场景如图5-6,子弹特效场景如图5-7和5-8。
图5-4 爆炸场景
图5-5 Boss出现场景
图5-6 游戏结束场景
图5-7 子弹特效场景(1)
图5-8 子弹特效场景(2)
5.2.3 游戏属性类
本游戏中属性类有很多,包括敌机、我机、敌机子弹、我机子弹、地图、爆炸、道具,boss等,它们都是实现MyViewIMP接口中InitView()、UpdataView(Canvas canvas,Paint paint)、MoveView()、LogicView(),RelaxView()方法来实现图片的加载,移动和逻辑处理。
(1) 敌机类(Enemy.Java):在敌机类中,需要有敌机的运动轨迹,所以需要定义enemyroad变量用来控制敌机是左移还是右移。再则,敌机有各种机型,并且每种机型对应的子弹也不相同,所以必须定义enemytype变量来控制敌机的机型变化。因为敌机有很多种,定义一个Bitmap的数组对象enemyBitmap[]也是必须的。在此类中,图片的位置和大小是要随时获取的数据,也要定义enemyx、enemyy、enemywidth,enemyheight。敌机的逻辑化处理和初始化处理都是在MyView中实现,有了这些变量,本类的具体实现方法如下: [资料来源:www.doc163.com]
public class Enemy implements MyViewIMP {
public Enemy(int enemyx,int enemyy,int enemytype,int enemyroad){
this.enemyx = enemyx;
this.enemyy = enemyy;
this.enemytype = enemytype;
this.enemyroad = enemyroad;
enemyBitmap = MyView.enemyBitmap;
}
public void MoveView() {
switch(enemyroad){
case ZUO:
enemyx -= 2;
break;