• 2017-2018-1 JaWorld 团队作业--冲刺4


    2017-2018-1 JaWorld 团队作业--冲刺4 (20162305)

    总体架构

    • 我们本次团队项目设定为基于Android系统Java架构下的打飞机小游戏
    • 游戏中所有模型的原型设定是精灵,因此不管是敌机还是战斗机都是精灵类,精灵类是所有类的父类
    • 精灵类(Sprite)下有三个子类,一个是战斗机类,也就是玩家;一个是走直线的精灵类(AutoSprite),也就是对敌机的统称;还有一个是爆炸类,指的是敌机或战斗机被摧毁。
    • 我所负责的是精灵类(Sprite)下的走直线的精灵类(AutoSprite)下的敌机类(EnemyPlane)

    EnemyPlane

    • 这个类是敌机类里面的主类,继承精灵类。首先先定义两个参数,power和value,power是敌机的抗击打能力,value是打一个敌机的分数。然后创建一个EnemyPlane的对象,调用Bitmap中的方法。
    
    private int power = 1;//敌机的抗打击能力
        private int value = 0;//打一个敌机的得分
    
        public EnemyPlane(Bitmap bitmap){
            super(bitmap);
        }
    
    
    • 再写几个方法确定敌机的抗击打能力和击毁一架敌机的分数。这几个方法分别是setPower,getPower,setValue和getValue,这四个方法用来确定其子类中定义的Power和Value两个数值。
    
        //设定敌机的抵抗能力
        public void setPower(int power){
            this.power = power;
        }
        
        //获得敌机的抵抗能力
        public int getPower(){
            return power;
        }
    
        //设定击毁一个敌机的分数
        public void setValue(int value){
            this.value = value;
        }
        
        //获得敌机的分数
        public int getValue(){
            return value;
        }
    
    
    • 在父类ISprite中有beforeDraw方法,在敌机类中定义一个相应的afterDraw方法,这需要三要素布(Canvas),Paint(漆)和游戏视图(gameView)。接着判断敌机是否被摧毁,对每一个子弹进行循环判断,判断敌机是否与子弹相交,如果和子弹相交,说明子弹打在了飞机上,子弹消失,敌机的power减1,如果power小于等于0,则说明敌机已经被摧毁,执行爆炸效果。
    
    protected void afterDraw(Canvas canvas, Paint paint, GameView gameView) {
            super.afterDraw(canvas, paint, gameView);
    
            //绘制完成后要检查自身是否被子弹打中
            if(!isDestroyed()){
                //敌机在绘制完成后要判断是否被子弹打中
    
                List<Bullet> bullets = gameView.getAliveBullets();
                for(Bullet bullet : bullets){
                    //判断敌机是否与子弹相交
                    Point p = getCollidePointWithOther(bullet);
                    if(p != null){
                        //如果有交点,说明子弹打到了飞机上
                        bullet.destroy();
                        power--;
                        if(power <= 0){
                            //敌机已经没有能量了,执行爆炸效果
                            explode(gameView);
                            return;
                        }
                    }
                }
            }
        }
    
    
    • explode方法,用来实现敌机的爆炸效果。首先创造爆炸效果,确定敌机中心位置,再新建一个爆炸类对象,将爆炸类对象定位,将这个对象添加到Sprite中。创建爆炸效果完成后,向GameView中添加得分并销毁敌机。
    
     //创建爆炸效果后会销毁敌机
        public void explode(GameView gameView){
            //创建爆炸效果
            float centerX = getX() + getWidth() / 2;
            float centerY = getY() + getHeight() / 2;
            Bitmap bitmap = gameView.getExplosionBitmap();
            Explosion explosion = new Explosion(bitmap);
            explosion.centerTo(centerX, centerY);
            gameView.addSprite(explosion);
    
            //创建爆炸效果完成后,向GameView中添加得分并销毁敌机
            gameView.addScore(value);
            destroy();
        }
    
    

    SmallEnemyPlane

    • 这个类继承EnemyPlane中的方法,创建一个小的敌机,利用EnemyPlane中的方法设定小敌机抗抵抗能力为1,即一颗子弹就可以销毁小敌机,再设定击毁一个小敌机的分数。销毁一个小敌机可以得1000分。

    • 相关代码

    
    public class SmallEnemyPlane extends EnemyPlane {
    
        public SmallEnemyPlane(Bitmap bitmap){
            super(bitmap);
            setPower(1);//小敌机抗抵抗能力为1,即一颗子弹就可以销毁小敌机
            setValue(1000);//销毁一个小敌机可以得1000分
        }
    
    }
    
    

    明日各个成员任务安排

    -林臻同学以及马平川同学完成最后的代码整合,其余同学负责测试代码寻找bug。

  • 相关阅读:
    wrk压测工具使用
    Mac 抓包工具wireshark使用
    hadoop无法停止
    非root用户如何使用docker命令
    too many open files
    kafka性能测试1.0.0
    命令查看linux主机配置
    ELK(Logstash+Elasticsearch+Kibana)的原理和详细搭建
    分布式session实现
    NUC972裸机调试步骤
  • 原文地址:https://www.cnblogs.com/Java1623/p/8001700.html
Copyright © 2020-2023  润新知