数据结构课程设计走迷宫游戏_第1页
数据结构课程设计走迷宫游戏_第2页
数据结构课程设计走迷宫游戏_第3页
数据结构课程设计走迷宫游戏_第4页
数据结构课程设计走迷宫游戏_第5页
已阅读5页,还剩6页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息工程学院课程设计报告课程名称数据结构课题名称走迷宫游戏专业班级学号姓名联系方式指导教师2015年12月27日1、数据结构课程设计任务书、题目、要求2、总体设计、设计思路及总体组成框架、操作流程图3、详细设计、程序中所采用的数据结构及存储结构的说明、函数功能模块说明、各函数的调用关系4、调试与测试:、调试方法与步骤:、测试结果的分析与讨论:、测试过程中遇到的主要问题及采取的解决措施:.6、源程序清单7、数据结构课程设计总结8、参考文献误误误误误误误误误错错错错错错错错错误误误误误误误错错错错错错错未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。

2、未定义书签。!未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。未定义书签。1、数据结构课程设计任务书题目程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。、要求1)老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;2)迷宫的墙足够结实,老鼠不能穿墙而过;3)正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;4)添加编辑迷宫功能,可修改当前迷宫,修改内容:墙变路、路变墙;5)找出走出迷宫的所有路径。利用序列化功能实现迷宫地图文件的存盘和读出等功能2、总体设计、

3、设计思路及总体组成框架1、思路(1) .利用mfc可以把迷宫地图以及老鼠形象可变的导出来。(2) .需要有墙有路,通过把迷宫地图划分成一个一个小方块,通过一个数组的值来判断是墙是路。(1表小墙0表小路)(3) .利用栈,来存入当前位置,然后判断下一位置,是否有路,存入栈中或出栈。(4) .把每个数组元素对应一个按钮根据点击按钮,改变数组的值从而改变墙和路的转化。(5) .键盘接受字符,根据字符调用不同的图片,达到老鼠超前走的效果。2、数据结构本程序运用的逻辑结构是线性和存储结构为顺序。之所以采用本结构是因为,迷宫主要用到栈来储存当前位置,和判断下一位置,来入栈。抽象数据类型线性表的定义如下:A

4、DTStack数据对象:D=a|aiCElemSet,i=1,2,3,n,n0数据关系:R1=|ai-1,aiD,i=1,2,3,n基本操作:Initstack(&s)操作结果:构造一个空栈SoStackempty(s)初始条件:栈s已经存在。操作结果:将s清为空栈。Push(&s,e)初始条件:栈s已经存在。操作结果:插入元素e为新的栈顶元素。Pop(&s,&e)初始条件:栈s已经存在,且非空。操作结果:删除s的栈顶元素,并用e返回其值ADTStack3、根据课程设计题目的功能要求,总体概要的组成框图如下:开始操作界面保存地图用户登陆界面、操作流程图1、键盘操作流程:开始2、模块流程图:开始

5、模块初始化加载迷宫地图面向对象而非面向工程的程序设计,事件和判断都具有同时性和并发性。3、游戏界面显示3、详细设计、程序中所采用的数据结构及存储结构的说明数据类型:结构体,整形数据输入:按照窗口、菜单提示按鼠标左键移动老鼠位置,按键盘的上、下、左、右键输出:可视化迷宫、函数功能模块说明(1)开始游戏voidCMainFrame:OnStart():开始游戏。voidCLabyrinthView:OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags):小老鼠键盘操。第一个参数表示哪个按键,接受上、下、左、右字符,判断调用哪个小老鼠图片,最后用脚印图片覆盖老鼠图片,

6、达到朝前走,留下脚印的效果。(2)重新开始voidCMainFrame:OnSysmap():系统地图。voidCLabyrinthView二OnSelfmap()、voidCLabyrinthView二OnLButtonDown(UINTnFlags,CPointpoint):绘制地图函数。达到墙变路、路变墙的目的。(3)保存图片voidCMainFrame:OnSave():保存地图。(4)载入图片voidCMainFrame:OnOpen():载入地图。BOOLCLabyrinthView:OnEraseBkgnd(CDC*pDC):设置欢迎画面,载入图片。(5)自绘地图voidCLab

7、yrinthView:OnLButtonDown(UINTnFlags,CPointpoint):墙变路,路变(6)自动寻路voidCLabyrinthView:OnAuto():为自动寻路函数。其重要调用Seqstack*CSkfction二init_Seqstack()、intCSkfction二Empty_Seqstack(Seqstack*s)、intCSkfction二Push_Seqstack(Seqstack*s,DataTypex)、intCSkfction二Pop_Seqstack(Seqstack*s,DataType*x)函数。(7)设置时间intCMainFrame:O

8、nCreate(LPCREATESTRUCTIpCreateStruct):到达在在状态栏中显示时间,调用了系统的函数SetTimer(1,1000,NULL);第一个参数为对应时器的代号。在一个程序中,可能有多个SetTimer,在Ontime响应时,可以根据第一个参数来确定是哪一个记时器所引起的事件。第二个参数用于设置时间。第三个参数为一个回调函数的指针,用NULL勺话,系统会把SetTimer产生的消息加入消息队列中。调用了一下三个函数信息,来显示时间。(IDS_LASTTIME);开始ir结束保存地图用户登陆界面际完成的情况说明(完成的功能,支持的数据类型等);基本功能都已经完成,而且

9、还加了保存图片、载入图片、设置时间、游戏帮助等功能。2.上机过程中出现的问题及其解决方案;(1)问题:每次走完迷宫,它都会保持现有状态,如果重新开始,要自己按重新开始,次才能开始,很麻烦。解决方案:voidCMainFrame:OnTimer(UINTnIDEvent)函数中调用voidCMainFrame:OnOpen(),这样在每次游戏结束时就可以调用这个函数,载入图片。(2)问题:通过键盘来如何控制对象(老鼠)的移动,我希望达到一种老鼠会动的效果,即朝左走头往左哦哦,朝右走,头朝右。解决方案:导入一组老鼠图片,用数组进行控制,没走一步判断调用哪一组老鼠图片。(3)问题:键盘控制时老是出错

10、。解决方案:后来通过CSDN博客园等IT技术社区找到了相关文章,如果你按键没有反应是因为它把你的消息转发到了其它的激活窗口的处理程序上,可以试着点击窗口的空白区域,不让任何子控件获得焦点(没有任何一个控件有一个虚线的框)的时候,这个就能激活了。、测试结果的分析与讨论:(1)如果不按开始按钮,会弹出一下对话框,如(图一)(图一)(2)游戏顺利进行,并成功。如(图二)(图二)(3)自动寻路完成,如(图三)(图三)(4)自动寻路完成,如(图四)(图四)(5)走完全部的路,如(图五)(图五)(6)非法输入:当小老鼠上、下、左、右移动时,如果按下非以上四键,老鼠呆在原地不动。对游戏和程序没有影响。、测试过程中遇到的主要问题及采取的解决措施:6、源程序清单1.定义程序中所有用到的数据及其数据结构

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论