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

    明天成员安排:

    • 马平川同学负责最后的类之间的耦合,所有成员讨论需要修改的地方。
  • 相关阅读:
    Hyperledger Fabric的容灾备份及恢复方法
    Sentinel使用
    Fabric1.4 架构和原理
    centos开放指定端口
    Python使用ProtoBuffer
    C++动态创建对象
    Shell笔记
    Go语言基础(二)
    Go语言基础(一)
    git常用命令
  • 原文地址:https://www.cnblogs.com/Java1623/p/8007344.html
Copyright © 2020-2023  润新知