300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > C我语言编程老鼠寻路 数据结构课设-走迷宫游戏.doc

C我语言编程老鼠寻路 数据结构课设-走迷宫游戏.doc

时间:2022-06-17 03:27:57

相关推荐

C我语言编程老鼠寻路 数据结构课设-走迷宫游戏.doc

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

一、需求分析

1.问题描述:

应用mfc编程,使程序开始运行时显示一个迷宫地图,迷宫中央有一只老鼠,迷宫的右下方有一个粮仓。游戏的任务是使用键盘上的方向键操纵老鼠在规定的时间内走到粮仓处。(1) 老鼠形象可辨认,可用键盘操纵老鼠上下左右移动;(2) 迷宫的墙足够结实,老鼠不能穿墙而过;(3) 正确检测结果,若老鼠在规定时间内走到粮仓处,提示成功,否则提示失败;(4)添加编辑迷宫功能,自会地图,可修改当前迷宫,修改内容:墙变路、路变墙;(5)在走不出迷宫的情况下,可以通过自动寻图走到粮仓。(6)可以保存当前自绘图片。

2.基本功能

(1)开始游戏(2)重新开始(3)保存图片(4)载入图片(5)自会地图(6)自动寻路(7)设置时间()游戏帮助 3.输入输出

数据类型:结构体,整形数据

输入:按照窗口、菜单提示按鼠标左键

移动老鼠位置,按键盘的上、下、左、右键

输出:可视化迷宫二、 概要设计

1.设计思路:

1).利用mfc可以把迷宫地图以及老鼠形象可变的导出来。

2).需要有墙有路,通过把迷宫地图划分成一个一个小方块,通过一个数组的值来判断是墙是路。(1表示墙0表示路)

3).利用栈,来存入当前位置,然后判断下一位置,存入栈中 (4).把每个数组元素对应一个按钮根据点击按钮,改变数组的值从而改变墙和路的转化。 2.数据结构设计:

本程序运用的逻辑结构是线性和存储结构为顺序。之所以采用本结构是因为,迷宫主要用到栈来储存当前位置,和判断下一位置,来入栈。

抽象数据类型线性表的定义如下:

ADT Stack{ 数据对象:D={ai| ai ∈ElemSet,i=1,2,3……,n,n≥0}

数据关系:R1={| ai-1,ai ∈D,i=1,2,3,……,n}

基本操作:

Initstack(&s)

操作结果:构造一个空栈s。

Stackempty(s)

初始条件:栈s已经存在。

操作结果:将s清为空栈。

Push(&s,e)

初始条件:栈s已经存在。

操作结果:插入元素e为新的栈顶元素。

Pop(&s,&e)

初始条件:栈s已经存在,且非空。

操作结果:删除s的栈顶元素,并用e返回其值。

} ADT Stack

3.软件结构设计:

开始游戏void CMainFrame::OnStart():开始游戏。void CLabyrinthView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags):小老鼠键盘操。第一个参数表示哪个按键,接受上、下、左、右字符,判断调用哪个小老鼠图片,最后用脚印图片覆盖老鼠图片,达到朝前走,留下脚印的效果。(2)重新开始void CMainFrame::OnSysmap():系统地图。

void CLabyrinthView::OnSelfmap()、void CLabyrinthView::OnLButtonDown(UINT nFlags, CPoint point):绘制地图函数。达到墙变路、路变墙的目的。(3)保存图片void CMainFrame::OnSave():保存地图。(4)载入图片void CMainFrame::OnOpen():载入地图。BOOL CLabyrinthView::OnEraseBkgnd(CDC* pDC):设置欢迎画面,载入图片。(5)自地图void CLabyrinthView::OnLButtonDown(UINT nFlags, CPoint point): 墙变路,路变墙

(6)自动寻路void CLabyrinthView::OnAuto():为自动寻路函数。其重要调用Seqstack * CSkfction::init_Seqstack()、int CSkfction::Empty_Seqstack(Seqstack *s)、int CSkfction::Push_Seqstack(Seqstack *s,DataType x)、int CSkfction::Pop_Seqstack(Seqstack *s,DataType *x)函数。(7)设置时间int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct):到达在在状态栏中显示时间,调用了系统的函数SetTimer(1,1000,NULL); 第一个参数为对应时器的代号。在一个程序中,可能有多个SetTimer,在Ontime响应时,可以根据第一个参数来确定是哪一个记时器所引起的事件。第二个参数用于设置时间。 第三个参数为一个回调函数的指针,用NULL的话,系统会把

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。