20162308 实验五 数据结构综合应用


style: ocean

实验四 -图的实现与应用

实验内容

实验五-1-编译、运行、测试

1 git clone 小组项目。2 编译项目,提交编译成功截图(全屏,要有学号信息)。3 提交运行过程中的截图(全屏,要有学号信息)。

实验五-2-代码修改

1. 在小组项目中,找一个合适的地方添加一个按钮,点击显示自己的学号。2. 提交运行截图(全屏,要有学号信息)。3. 在项目中找一个界面,自己复制一份命名为XXXbak,修改代码,替换原来的部分。4. 提交运行截图(全屏,要有学号信息)。

实验五-3-代码分析

分析小组代码:1. 数据结构的应用情况及相关代码。2. 排序算法的应用情况及相关代码。3. 查找算法的应用情况及相关代码。4. 完成实验报告。

  • 我们本次做了飞机大战的游戏,本次游戏是想让使用者通过操控一个飞机进行击毁敌机和躲避敌机的操作。这个APP总体是基于精灵类ISpirte实现了战斗机类,走直线的精灵类和爆炸类,这些类构成了整个APP的整体架构,所有的功能都集中在这几个类中。我们定义了Sprite类,即精灵类,游戏中的飞机、子弹等都是继承自该类,我们通过moveTo()、move()等方法控制精灵的位置,通过beforeDraw()、onDraw()、afterDraw()实现相应的绘图逻辑。精灵类及其子类继承如下所示:

  • 我们小组的数据结构为线性结构,主要使用了线性表。例如获取处于活动状态的敌机、存储所有的精灵等。
     public List<EnemyPlane> getAliveEnemyPlanes(){
        List<EnemyPlane> enemyPlanes = new ArrayList<EnemyPlane>();
        for(ISprite s : sprites){
            if(!s.isDestroyed() && s instanceof EnemyPlane){
                EnemyPlane sprite = (EnemyPlane)s;
                enemyPlanes.add(sprite);
            }
        }
        return enemyPlanes;
    }
  • 将所有敌机存储在list中,并进行遍历观察是否与战斗机有交点。若有交点则战斗机死亡。
  List<EnemyPlane> enemies = gameView.getAliveEnemyPlanes();
            for(EnemyPlane enemyPlane : enemies){
                Point p = getCollidePointWithOther(enemyPlane);
                if(p != null){
                    explode(gameView);
                    break;
                }
            }
  • 没有在代码中使用排序、查找算法。
posted @ 2017-12-17 23:15  20162308马平川  阅读(116)  评论(0编辑  收藏