实验五 数据结构综合应用
课程名称:《程序设计与数据结构》
学生班级:1623班
学生姓名:朱娅霖
学生学号:20162322
实验时间:2017年12月15日
实验名称:数据结构综合应用
指导老师:娄嘉鹏、王志强老师
0.目录
- [数据结构综合应用-1](#1) - [数据结构综合应用-2](#2) - [数据结构综合应用-3](#3)数据结构综合应用-1
### 一、实验要求 1. git clone 小组项目 2. 编译项目,提交编译成功截图(全屏,要有学号信息) 3. 提交运行过程中的截图(全屏,要有学号信息)二、实验过程
- 由于我们组以前没有用android studio直接上传至码云,因此在实验前一天将先将代码传上去,参见或许是介绍Android Studio使用Git最详细的文章
- 将原来clone好的项目删掉,新建一个文件夹“20162322_ZYL_exp5”
- 在android studio中重新clone,将项目放在文件夹“20162322_ZYL_exp5”中
- 在android studio中运行该项目,会自动编译
三、实验结果
数据结构综合应用-2
### 一、实验要求 1. 在小组项目中,找一个合适的地方添加一个按钮,点击显示自己的学号 2. 提交运行截图(全屏,要有学号信息) 3. 在项目中找一个界面,自己复制一份命名为XXXbak,修改代码,替换原来的部分 4. 提交运行截图(全屏,要有学号信息)二、实验结果
数据结构综合应用-3
### 一、实验要求 分析小组代码: 1. 数据结构的应用情况及相关代码 2. 排序算法的应用情况及相关代码 3. 查找算法的应用情况及相关代码 4. 完成实验报告二、实验内容
1. 数据结构的应用情况及相关代码
二维矩阵:在地图显示设置的时候运用到了二维矩阵。
public static int [] Steps;
public static final int FLOOR = 1; //地板
public static final int NOTHING = 0; //没有
public static final int BOX = 4; //该单元格放的是箱子
public static final int FLAG = 2; //红旗,表示箱子的目的地
public static final int MAN = 5; //搬运工
public static final int WALL = 3; //墙
public static final int MAN_FLAG = 5; //搬运工 + 小球
public static final int BOX_FLAG = 6; //箱子 + 小球
public static final int [][] LEVEL_1 = {
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 3, 2, 3, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 3, 1, 3, 3, 3, 3, 0, 0, 0, 0},
{0, 0, 0, 0, 3, 3, 3, 4, 1, 4, 2, 3, 0, 0, 0, 0},
{0, 0, 0, 0, 3, 2, 1, 4, 5, 3, 3, 3, 0, 0, 0, 0},
{0, 0, 0, 0, 3, 3, 3, 3, 4, 3, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 3, 2, 3, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
};
栈:在初始化地图的时候运用到了栈。
public GameState(int[][] initialState){
//获得的地图数组
mLabelInCells = initialState;
//新建一个栈
stack = new Stack<>();
//生成一个地图大小的数组
temp = new int[initialState.length][initialState[0].length];
for (int i = 0; i < initialState.length; i++)
for(int j=0;j<initialState[i].length;j++) {
temp[i][j] = initialState[i][j];
mLabelInCells[i][j] = initialState[i][j];
}
get_gongren_chushi_weizhi(); //根据游戏开局初始化搬运工的位置
}
2. 查找算法的应用情况及相关代码
线性查找:在绘制地图时运用到了线性查找。
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;
}
}
}