实验五:数据结构综合应用
课程:程序设计与数据结构
班级: 1623
姓名: 张旭升
学号:20162329
指导教师:娄嘉鹏 王志强
实验日期:12月15日
实验密级: 非密级
预习程度: 已预习
必修/选修: 必修
实验序号: cs_29
实验名称: 数据结构综合应用
实验内容:
1.分析系统架构
2.编译、运行、测试系统
3.修改系统
4.分析数据结构、排序、查找算法的应用
实验要求
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是 运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决 办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可 以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
一、系统架构分析
游戏系统架构图:
由图看得出我们的游戏大致实行的是一种类似线性的结构,由主界面的三个个按钮分为三大块
- 选择关卡——游戏界面——胜利界面
- 选项界面
- 关于我们
每一块都是由上一个活动到下一个活动的类似线性连接
二、编译,运行,测试系统
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循环语句对数组中元素进行蛮力法查找地板,小人,墙,箱子等的位置,然后根据查找结果绘制对应图片。
五、实验心得
本次实验重在考察我们对自己项目的了解程度,主要通过项目的分析,克隆,部分修改结果,来体现,经过本次实验,我感觉到我们组的游戏在数据结构的运用上并不是很明显,可能是第一次做项目经验不足的原因,从一开始的规划就不是很完善,导致结果并不理想,希望以后自己可以吸取这次的教训有所提高。