zoukankan      html  css  js  c++  java
  • 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循环语句对数组中元素进行蛮力法查找地板,小人,墙,箱子等的位置,然后根据查找结果绘制对应图片。

    五、实验心得

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

  • 相关阅读:
    CRLF注入
    Windows下消息中间件RabbitMQ安装教程(超详细)
    (超详细)SpringBoot+RabbitMQ+Stomp+JS实现前端消息推送
    数数塔 NBUT 1083
    数数塔 NBUT 1083
    数塔 HDU 2084
    数塔 HDU 2084
    数塔 HDU 2084
    递推
    递推
  • 原文地址:https://www.cnblogs.com/Zhangxusheng/p/8051791.html
Copyright © 2011-2022 走看看