20162322朱娅霖

导航

 

实验五 数据结构综合应用

课程名称:《程序设计与数据结构》
学生班级:1623班
学生姓名:朱娅霖
学生学号:20162322
实验时间:2017年12月15日
实验名称:数据结构综合应用
指导老师:娄嘉鹏、王志强老师

0.目录

- [数据结构综合应用-1](#1) - [数据结构综合应用-2](#2) - [数据结构综合应用-3](#3)

数据结构综合应用-1

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

二、实验过程

  1. 由于我们组以前没有用android studio直接上传至码云,因此在实验前一天将先将代码传上去,参见或许是介绍Android Studio使用Git最详细的文章
  2. 将原来clone好的项目删掉,新建一个文件夹“20162322_ZYL_exp5”
  3. 在android studio中重新clone,将项目放在文件夹“20162322_ZYL_exp5”中
  4. 在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;
                }
            }
    }

返回目录

posted on 2017-12-17 23:13  竹蕴澜  阅读(268)  评论(0编辑  收藏  举报