2017-2018-1 JaWorld 团队作业--冲刺5

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;
            }
        }

明天成员安排:

  • 马平川同学负责最后的类之间的耦合,所有成员讨论需要修改的地方。

posted on 2017-12-08 22:32  JaWorld  阅读(224)  评论(0编辑  收藏  举报

导航