数据结构课程设计---走迷宫游戏

数据结构课程设计---走迷宫游戏

ID:23396205

大小:55.00 KB

页数:12页

时间:2018-11-07

数据结构课程设计---走迷宫游戏_第1页
数据结构课程设计---走迷宫游戏_第2页
数据结构课程设计---走迷宫游戏_第3页
数据结构课程设计---走迷宫游戏_第4页
数据结构课程设计---走迷宫游戏_第5页
资源描述:

《数据结构课程设计---走迷宫游戏》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、课程设计说明书(数据结构课程设计)专业:课程名称:数据结构课程设计班级:设计题目:走迷宫游戏设计时间:2013-2-25至2013-3-8评语:________________________________________________________________________________________________________________________________________________________________________________________________

2、_____评阅成绩:____评阅教师:__一、问题描述与需求分析1、问题描述程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。要求:1)老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2)迷宫的墙足够结实,老鼠不能穿墙而过;3)正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;4)添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;5)找出走出迷宫的所有路径,以及最短路径;6)利用序列化功能实现迷宫地图文件的存

3、盘和读出等功能。2、功能需求分析1.老鼠形象设计,使用图形化编程,绘制椭圆,填充颜色,绘制线。2.设置游戏者在探索过程中遇到迷宫边界和墙时,不可继续前行,定义好迷宫边界。3.使用time函数获取系统时间,处理游戏所用时间,限定操作时间,对游戏者的位置有准确的判断,当到达出口时,可以识别,返回提示信息。4.对于迷宫的所有路径的求解,比较最短路径,最小生成树算法。5.对迷宫的地图可将其存储到二进制文件中,在下次使用时直接调用,读取文件。二、概要设计1、总体设计思路在程序中,采用二维数组存储迷宫地图(0:墙1:路),在探索迷宫过

4、程中采用栈的数据结构存储探索迷宫时的全部路径和有效路径,因栈的“后进先出”结构非常适合探索过程中的退步,即可以保证在任何位置都可沿原路退回。在探索迷宫过程中采用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向在继续探索,直到所有可能的通路都探索到为止。2、模块简介程序由以下几个模块组成:(1)迷宫地图随机生成模块:入口:int**Maze()出口:returnmaze;实现功能:该函数使用new函数为指向二维数组的指针maze申请存储空间,分两步实现,先申请长度等

5、于行数加2的二级指针,然后为每个二维指针申请存储空间。调用包含在头文件stdlib.h中的库函数,随机数生成器srand(),rand(),及包含在头文件time.h中的系统时间函数time(),srand((unsigned)time(NULL))使用系统时间,传入空指针NULL,作为初始化种子,使得在后面调用的rand()%2函数产生不同的随机数,取余之后为(0和1),从而实现了迷宫地图的随机生成,但使用该方法产生的迷宫地图中不一定存在一条从入口到出口的路径。最后使用for循环嵌套给迷宫的上、下、左、右边界赋值0(为墙

6、壁);指定迷宫的入口与出口位置同时赋值为1(为通道)。因定义了二维指针类型函数,故在其它函数调用该函数时返回指向迷宫地图的二维指针,使得调用迷宫地图极为方便。(2)栈操作实现模块:该模块共包含:①初始化栈,②元素入栈,③元素出栈,④删除栈顶元素,⑤栈的遍历5个函数。①初始化栈入口:intStackTraverse(SqStack*s)出口:exit(OVERFLOW);returnTRUE;实现功能:初始化一个栈,并为其分配存储空间初始量。形参为栈类型指针,调用时传递实参全局变量realPathPath地址,调用包含在头文

7、件malloc.h中的库函数malloc根据栈的存储空间初始量及SqStack所占字节为其动态分配内存,最后,将内存地址赋给栈底指针,同时使栈顶指针也指向该内存,栈的大小为存储空间初始量;当分配失败时,返回空指针NULL,退出该函数同时输出错误提醒语句,以便调试;分配成功,返回TRUE,表明该函数已执行。这样做的优点是节省了内存,根据存储使用量动态分配,在使用结束后可及时释放该内存。②元素入栈入口:intPush(SqStack*s,SElemTypee)出口:exit(OVERFLOW);returnTRUE;实现功能:

8、向栈中添加新元素。形参为栈类型指针,栈元素类型e,调用时传递实参地址及入栈元素;但需注意的是:在入栈之前要判断栈是否还有空间容纳新元素,如栈满(s->top-s->base>=s->stackSize)则应使用realloc函数为栈分配存储空间增量(STACKINCREMENT),在栈底指针base之后

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。