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

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

0 分析系统架构

  • 我们本次做的是一个飞机大战的游戏,本次游戏是想让使用者通过操控一个飞机进行击毁敌机和躲避敌机的操作。这个APP总体是基于精灵类ISpirte实现了战斗机类,走直线的精灵类和爆炸类,这些类构成了整个APP的整体架构,所有的功能都集中在这几个类中。
  • 战斗机类CombatAircraft:

    战斗机类,定义一个由玩家操控的战斗机,这个战斗机每隔7帧发射子弹,并且设定方法确定战斗机一直处在界面中。战斗机如果被击中,执行爆炸效果。具体来说,首先隐藏战斗机,然后创建爆炸效果,爆炸用28帧渲染完成,爆炸效果完全渲染完成后,爆炸效果消失。然后战斗机会进入闪烁模式,战斗机闪烁一定次数(5次)后销毁。在飞机当前还没有被击中时,要判断是否将要被敌机击中。通过定义各种参数和判断实现以上功能,设立战斗机类。

  • 走直线的精灵类:

    走直线的精灵类,这个类是下面要定义的敌机类和子弹类的父类。在这个类中,定义精灵的移动速度和方向,在y轴方向移动一定的像素位置。再检查精灵是否超出界面范围,如果超出了范围,则销毁精灵。

    敌机类(EnemyPlane):定义敌机的抗击打能力和击毁一个敌机得到的分数,设定相应的参数。敌机需要一个方法来判断是否被击中,判断子弹和敌机是否有交点,有的话则敌机中弹。当敌机没有能量了以后执行爆炸效果,爆炸之后销毁敌机。小敌机类是敌机类的子类,继承敌机类的方法,设定小敌机的抗击打能力和分数。

    子弹类:走直线的精灵类中的子类,设定速度方向为负,让子弹在界面中向上移动。

  • 爆炸类:

    爆炸效果由14个片段组成,最开始处于爆炸的第0片段,每个爆炸片段绘制2帧。获取爆炸位置和宽度,爆炸的片段自加1,用于绘制下个爆炸片段。当绘制完所有的爆炸片段后,销毁爆炸效果。得到绘制完整爆炸效果需要的帧数,即28帧

  • 游戏界面:在游戏的开始界面中,我们定义了三个按钮:开始游戏、规则介绍和开发团队。开始游戏进入游戏界面,规则介绍部分对这款小游戏的规则进行介绍,开发团队按钮介绍本团队的成员及其分工。

1 编译、运行、测试系统

  • 编译代码:在从码云上克隆下来代码后,我发现一直显示错误,显示的是Gradle project sync failed。后来在网上我找到了相关问题的解决办法,重新下载了新的压缩包放在了指定的位置,再更新Android Studio,解决了这个问题
  • 运行和测试

2 修改系统

  • 我在之前的开始界面的基础上,又添加了一个按钮,点进这个按钮,进入一个新的界面,在这个界面中我加入了自己的学号信息和一个时钟。

3 分析数据结构、排序、查找算法的应用

  • List的应用

    在GameView中,定义了两个list类对象,sprites和spritesNeedAdded。通过这两个list来存放精灵类对象,实现敌机的生成,子弹的生成。

    • 生成敌机
    
    //生成随机的Sprite
    private void createRandomSprites(int canvasWidth){
        ISprite sprite = null;
        int speed = 2;
        //callTime表示createRandomSprites方法被调用的次数
        int callTime = Math.round(frame / 30);
        //发送敌机
        sprite = new SmallEnemyPlane(bitmaps.get(2));
    
        if(sprite != null){
            float spriteWidth = sprite.getWidth();
            float spriteHeight = sprite.getHeight();
            float x = (float)((canvasWidth - spriteWidth)*Math.random());
            float y = -spriteHeight;
            sprite.setX(x);
            sprite.setY(y);
            if(sprite instanceof AutoISprite){
                AutoISprite autoSprite = (AutoISprite)sprite;
                autoSprite.setSpeed(Math.round(speed+Math.random()*2-1));
            }
            addSprite(sprite);
        }
    }
    

4 实验体会

  • 这次我们小组合力开发出了一个app,在开发过程中我们遇到了很多问题,不论是开发流程上还是技术方面上我们都遇到了很多问题。我们组里的同学互相帮助,感谢马平川同学对我在代码上的指导,让我学到了很多知识,更要感谢张师瑜组长的合理规划和安排。我在这次项目中负责软件测试和统筹博客内容,这些对我来说都是挑战,更是收获。
时间: 2024-11-06 11:29:19

实验五 数据结构综合应用 20162305的相关文章

实验五 数据结构综合应用

20162317袁逸灏 实验五 数据结构综合应用 实验内容 实验五-1-编译.运行.测试 git clone 小组项目 编译项目,提交编译成功截图(全屏,要有学号信息) 提交运行过程中的截图(全屏,要有学号信息) 实验五-2-代码修改 在小组项目中,找一个合适的地方添加一个按钮,点击显示自己的学号 提交运行截图(全屏,要有学号信息) 实验要求 分析系统架构 编译.运行.测试系统 修改系统 分析数据结构.排序.查找算法的应用 实验过程 实验五-1-编译.运行.测试 这个实验考察的是学生对于代码项目

20162328蔡文琛 实验五 数据结构综合应用

实验五:数据结构综合应用 课程:程序设计与数据结构 班级: 1623 姓名: 蔡文琛 学号:20162328 指导教师:娄嘉鹏 王志强 实验日期:12月15日 实验密级: 非密级 预习程度: 已预习 必修/选修: 必修 实验名称: 数据结构综合应用 实验内容: 1.分析系统架构 2.编译.运行.测试系统 3.修改系统 4.分析数据结构.排序.查找算法的应用 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 完成实验.撰写实验报告,

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

style: ocean 实验四 -图的实现与应用 实验内容 实验五-1-编译.运行.测试 1 git clone 小组项目.2 编译项目,提交编译成功截图(全屏,要有学号信息).3 提交运行过程中的截图(全屏,要有学号信息). 实验五-2-代码修改 1. 在小组项目中,找一个合适的地方添加一个按钮,点击显示自己的学号.2. 提交运行截图(全屏,要有学号信息).3. 在项目中找一个界面,自己复制一份命名为XXXbak,修改代码,替换原来的部分.4. 提交运行截图(全屏,要有学号信息). 实验五-

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

北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 石亚鑫 学号:20162303 成绩: 2分 指导教师:娄嘉鹏 王志强 实验日期:12月15日 实验密级: 非密级 预习程度: 已预习 实验时间:10:00-12:00 必修/选修: 必修 实验序号: cs_03 实验内容 实验 分析系统架构 首先分析一下各部分代码 card类 card是用来显示2048游戏中的数字卡片,首先设定的是card的背景 /* * LayoutParams类也只是简单的

20162320刘先润大二 实验五 数据结构综合应用

一.分析系统架构 二.编译.运行.测试系统 1.首先进入团队项目的码云? Java演绎法?,点击克隆/下载按钮下的复制 2.打开Android Studio,点击VCS列表下的Git,然后点击clone 3.将复制的地址粘贴到Git Repository URL下,然后选择克隆路径和名称,点击clone,等待克隆完成就相当于编译成功 4.点击run并配置相应的虚拟手机设备,运行截图如下 三.修改系统 1.首先打开主界面的xml文件,进入design模式,从左边添加一个按钮进入任意位置,查看其id

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

分析系统架构 Sprite精灵类 ISprite精灵类是所有类的父类 CombatAircraft战斗机类 首先确保战斗机完全位于Canvas范围内,每隔7帧发射单发黄色子弹. protected void beforeDraw(Canvas canvas, Paint paint, GameView gameView) { if(!isDestroyed()){ //确保战斗机完全位于Canvas范围内 validatePosition(canvas); //每隔7帧发射子弹 if(getFr

20162302 实验五《数据结构综合应用》实验报告

实 验 报 告 课程:程序设计与数据结构 姓名:杨京典 班级:1623 学号:20162302 实验名称:数据结构综合应用 实验器材:装有IdeaU的联想拯救者15ISK 实验目的与要求: 1.编译运行测试 2.代码修改 3.代码分析 实验内容.步骤与体会: 实验内容: 编译运行测试 点击红色圈出来的地方 选择虚拟机也可以选择连在usb上的物理机,在这里就选择虚拟机 运行成功 测试按下方向键会向不同方向移动,并记录按键步数 把箱子推到指定位置会出现过关画面并播放一小段音乐 代码修改 增加按键效果

数据结构实验报告-实验五 查找

实验五   查找   l  实验目的 1. 查找的基本概念 掌握在数组上进行各种查找的方法和算法. 深刻理解各种方法的特点,并能灵活运用. 加深对查找的理解,逐步培养解决实际问题的能力. l  实验内容 1.查找的基本概念 (一)基础题 1.编写各种查找方法的基本操作函数: (1)search1(int *k,int n,int key)无序线性表的顺序查找: (2)search2(int *k,int n,int key)有序线性表的顺序查找: (3)bin_search(int *k,int

20172329 2017-2018-2 《程序设计与数据结构》实验五报告

这是这学期最后一次实验了,也是学到了很多东西,希望自己可以可以善始善终,加油! 让我们开始这一篇博客吧! 20172329 2017-2018-2 <程序设计与数据结构>实验五报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 王文彬 学号:20172329 实验教师:王志强 实验日期:2018年6月11日 必修/选修: 必修 一.实验内容 1.网络编程与安全-1 两人一组结对编程: a. 参考http://www.cnblogs.com/rocedu/p/6766748