20162329 实验五:数据结构综合应用

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

课程:程序设计与数据结构
班级: 1623
姓名: 张旭升
学号:20162329
指导教师:娄嘉鹏 王志强
实验日期:12月15日

实验密级: 非密级
预习程度: 已预习

必修/选修: 必修
实验序号: cs_29

实验名称: 数据结构综合应用

实验内容:

1.分析系统架构

2.编译、运行、测试系统

3.修改系统

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

实验要求


1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程

  1. 完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是 运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决 办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可 以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

  2. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。


一、系统架构分析

游戏系统架构图:

由图看得出我们的游戏大致实行的是一种类似线性的结构,由主界面的三个个按钮分为三大块

  • 选择关卡——游戏界面——胜利界面
  • 选项界面
  • 关于我们
    每一块都是由上一个活动到下一个活动的类似线性连接

二、编译,运行,测试系统

1.克隆项目到目标文件夹:


建立自己的文件夹——打开命令行——进入目标文件夹——git clone + 目标链接 —— 输入用户名,密码 —— 克隆成功

2.编译,运行


打开Android Studio —— 打开项目(自动编译) —— 运行项目

三、修改系统

1.显示学号信息


在游戏的选项界面的布局文件中加入一个Button,按钮文字设置为自己名字 —— 在GameOption活动中获取按钮组件 —— 然后为按钮设置监听器 —— 当点击按钮时发出一条Tost消息显示学号

2.修改界面样式

选择关卡原样式

修改后样式

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

实现查找的部分代码:

 int [][] labelInCells = mGameActivity.getCurrentState().getLabelInCells();

    for (int r = 0; r < labelInCells.length; r++)  //逐行地扫描矩阵
        for (int c = 0; c < labelInCells[r].length; c++){ //对当前行r,逐列地扫描
            destRect = getRect(r, c);  //得到图片在屏幕中的显示区域
            srcRect = new Rect(0, 0,GameBitmaps.FlagBitmap.getWidth(), GameBitmaps.FlagBitmap.getHeight());//获得显示图片的大小
            switch (labelInCells[r][c]){
                case 1:
                    canvas.drawBitmap(GameBitmaps.FloorBitmap,srcRect,destRect,null);   //绘制地板
                    break;
                case 2:
                    canvas.drawBitmap(GameBitmaps.FlagBitmap, srcRect, destRect, null); //绘制标记
                    break;
                case 3:
                    canvas.drawBitmap(GameBitmaps.WallBitmap, srcRect, destRect, null); //绘制墙
                    break;
                case 4:
                    canvas.drawBitmap(GameBitmaps.BoxBitmap, srcRect, destRect, null);  //绘制箱子
                    break;
                case 5:
                    canvas.drawBitmap(GameBitmaps.ManBitmap, srcRect, destRect, null);  //绘制人
                    break;
                case 6:
                    canvas.drawBitmap(GameBitmaps.ReadboxBitmap, srcRect, destRect, null);  //绘制红箱子
                    break;
            }

在以上代码中先获取到表示地图的一个二位数组,然后运用一个嵌套的for循环语句对数组中元素进行蛮力法查找地板,小人,墙,箱子等的位置,然后根据查找结果绘制对应图片。

五、实验心得

本次实验重在考察我们对自己项目的了解程度,主要通过项目的分析,克隆,部分修改结果,来体现,经过本次实验,我感觉到我们组的游戏在数据结构的运用上并不是很明显,可能是第一次做项目经验不足的原因,从一开始的规划就不是很完善,导致结果并不理想,希望以后自己可以吸取这次的教训有所提高。

posted @ 2017-12-17 12:50  Don't_worry  阅读(449)  评论(0编辑  收藏  举报