- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计说明书
(数据结构课程设计)
专 业:
课程名称: 数据结构课程设计 班级:
设计题目: 走迷宫游戏
设计时间: 2013-2-25 至 2013-3-8
评 语:_________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
评阅成绩:__ __评阅教师:__
一、问题描述与需求分析
1、问题描述
程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。
要求:
老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;
迷宫的墙足够结实,老鼠不能穿墙而过;
正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;
添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;
找出走出迷宫的所有路径,以及最短路径;
6)利用序列化功能实现迷宫地图文件的存盘和读出等功能。
功能需求分析
老鼠形象设计,使用图形化编程,绘制椭圆,填充颜色,绘制线。
设置游戏者在探索过程中遇到迷宫边界和墙时,不可继续前行,定义好迷宫边界。
使用time函数获取系统时间,处理游戏所用时间,限定操作时间,对游戏者的位置有准确的判断,当到达出口时,可以识别,返回提示信息。
对于迷宫的所有路径的求解,比较最短路径,最小生成树算法。
5.对迷宫的地图可将其存储到二进制文件中,在下次使用时直接调用,读取文件。
二、概要设计
1、总体设计思路
在程序中,采用二维数组存储迷宫地图(0:墙 1:路),在探索迷宫过程中采用栈的数据结构存储探索迷宫时的全部路径和有效路径,因栈的“后进先出”结构非常适合探索过程中的退步,即可以保证在任何位置都可沿原路退回。在探索迷宫过程中采用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向在继续探索,直到所有可能的通路都探索到为止。
2、 模块简介
程序由以下几个模块组成:
迷宫地图随机生成模块:
入口:int **Maze()
出口:return maze;
实现功能:该函数使用 new函数为指向二维数组的指针maze 申请存储空间,分两步实现,先申请长度等于行数加2 的二级指针,然后为每个二维指针申请存储空间。
调用包含在头文件 stdlib .h 中的库函数,随机数生成器 srand( ),rand( ), 及包含在头文件time.h 中的系统时间函数time(),srand((unsigned)time(NULL)) 使用系统时间,传入空指针NULL,作为初始化种子,使得在后面调用的rand()%2函数产生不同的随机数,取余之后为(0和1),从而实现了迷宫地图的随机生成,但使用该方法产生的迷宫地图中不一定存在一条从入口到出口的路径。
最后使用for循环嵌套给迷宫的上、下、左、右边界赋值0(为墙壁);指定迷宫的入口与出口位置同时赋值为1(为通道)。
因定义了二维指针类型函数,故在其它函数调用该函数时返回指向迷宫地图的二维指针,使得调用迷宫地图极为方便。
栈操作实现模块:
该模块共包含:①初始化栈,②元素入栈,③元素出栈,④删除栈顶元素,⑤栈的遍历 5个函数。
①初始化栈
入口:int StackTraverse(SqStack *s)
出口:exit(OVERFLOW); return TRUE;
实现功能:初始化一个栈,并为其分配存储空间初始量。形参为栈类型指针,调用时传递实参全局变量realPath Path 地址,调用包含在头文件 malloc.h 中的库函数malloc 根据栈的存储空间初始量及SqStack所占字节为其动态分配内存,最后,将内存地址赋给栈底指针,同时使栈顶指针也指向该内存,栈的大小为存储空间初始量;当分配失败时,返回空指针NULL,退出该函数同时输出错误提醒语句,以便调试;分配成功,返回TRUE,表明该函数已执行。
这样做的优点是节省了内存,根据存储使用量动态分配,在使用结束后可及时释放该内存。
②元素入栈
入口:int Push(SqStack *s,SElemType e)
出口:exit
您可能关注的文档
- 事业单位面试技巧.doc
- 事业单位言语理解题库.doc
- 试卷评讲课教案.doc
- 试论《巴黎圣母院》的浪漫主义艺术特征.doc
- 试论传统媒体与新媒体的竞争与共生.doc
- 试论个人独资企业与外商独资企业的异同.doc
- 试论行政处罚权运行的程序制约31.doc
- 试论会计信息化.doc
- 试论计件工资制存在的问题及解决方案.doc
- 试论民歌《茉莉花》的流变.doc
- 专题06 经济体制(我国的社会主义市场经济体制)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题11 世界多极化与经济全球化-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 专题03 经济发展与社会进步-5年(2020-2024)高考1年模拟政治真题分类汇编(浙江专用)(解析版).docx
- 专题09 文化传承与文化创新-5年(2020-2024)高考1年模拟政治真题分类汇编(北京专用)(原卷版).docx
- 5年(2020-2024)高考政治真题分类汇编专题08 社会进步(我国的个人收入分配与社会保障)(原卷版).docx
- 专题07 探索世界与把握规律-5年(2020-2024)高考1年模拟政治真题分类汇编(解析版).docx
- 5年(2020-2024)高考政治真题分类汇编专题06 经济体制(我国的社会主义市场经济体制)(原卷版).docx
- 专题11 全面依法治国(治国理政的基本方式、法治中国建设、全面推进依法治国的基本要求)-五年(2020-2024)高考政治真题分类汇编(解析版).docx
- 专题17 区域联系与区域协调发展-【好题汇编】十年(2015-2024)高考地理真题分类汇编(解析版).docx
- 专题01 中国特色社会主义-5年(2020-2024)高考1年模拟政治真题分类汇编(原卷版).docx
最近下载
- 2024年刑法知识考试题库及答案【基础+提升】.pdf VIP
- 支气管镜诊疗操作相关大出血的预防和救治专家共识.pdf
- 2022年太原理工大学计算机科学与技术专业《操作系统》科目期末试卷B(有答案).docx VIP
- 2023年太原理工大学计算机科学与技术专业《操作系统》科目期末试卷B(有答案).docx VIP
- PP板_MSDS.doc
- 土木工程识图9剖面图和断面图.ppt
- 2024届高三英语一轮复习:说题比赛 ---2021年新高考II卷语法填空课件.pptx VIP
- 长输管道施工组织方案.doc
- 大职赛生涯闯关参考答案.docx VIP
- AST_中央企业班组长岗位管理能力资格认证(三期模拟1030)-0019.pdf
文档评论(0)