2017-2018-1 JaWorld 团队作业--冲刺5(20162310)
团队项目之战斗机类分析博客
总结
- 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏
- 游戏中所有模型的原型设定是精灵,因此不管是敌机还是战斗机都是精灵类,精灵类是所有类的父类
- 精灵类(Sprite)下有三个子类,一个是战斗机类,也就是玩家;一个是走直线的精灵类(AutoSprite),也就是对敌机的统称;- - 还有一个是爆炸类,指的是敌机或战斗机被摧毁。
- 我所负责的是精灵类(Sprite)下的 战斗机类(CombatAircraft)
战斗机类CombatAircraft
战斗机类出现的过程分为,
显现-->被敌机击中-->爆炸-->战斗机闪烁-->消失
方法为beforeDraw---->afterDraw
战斗机效果
战斗机位于一个Canvas范围内
如果战斗机没有击毁
if(!isDestroyed()){
validatePosition(canvas);}
每隔7帧发射子弹
if(getFrame() % 7 == 0){
fight(gameView);
}
发射子弹,分为单发子弹和双发子弹,单发模式下渲染效果是黄色子弹,双发模式下是蓝色子弹
-
单发模式下发射单发黄色子弹
if(single){ Bitmap yellowBulletBitmap = gameView.getYellowBulletBitmap(); Bullet yellowBullet = new Bullet(yellowBulletBitmap); yellowBullet.moveTo(x, y); gameView.addSprite(yellowBullet); }
-
双发模式下发射两发蓝色子弹
float offset = getWidth() / 4; float leftX = x - offset; float rightX = x + offset; Bitmap blueBulletBitmap = gameView.getBlueBulletBitmap(); Bullet leftBlueBullet = new Bullet(blueBulletBitmap); leftBlueBullet.moveTo(leftX, y); gameView.addSprite(leftBlueBullet); Bullet rightBlueBullet = new Bullet(blueBulletBitmap); rightBlueBullet.moveTo(rightX, y); gameView.addSprite(rightBlueBullet); doubleTime++; if(doubleTime >= maxDoubleTime){ single = true; doubleTime = 0;
发射炸弹
战斗机获得道具
判断是否获得炸弹道具
List<BombAward> bombAwards = gameView.getAliveBombAwards();
for(BombAward bombAward : bombAwards){
Point p = getCollidePointWithOther(bombAward);
if(p != null){
bombAwardCount++;
bombAward.destroy();
//Game.receiveBombAward();
}
判断是否获得子弹道具
List<BulletAward> bulletAwards = gameView.getAliveBulletAwards();
for(BulletAward bulletAward : bulletAwards){
Point p = getCollidePointWithOther(bulletAward);
if(p != null){
bulletAward.destroy();
single = false;
doubleTime = 0;
}
}
明天成员安排:
- 马平川同学负责最后的类之间的耦合,所有成员讨论需要修改的地方。