【vc++精品源码栏目提醒】:以下是网学会员为您推荐的vc++精品源码-暑假实习MFC实现迷宫自寻路径 - 编程语言,希望本篇文章对您学习有所帮助。
数据结构与 VC 编程实习 实习报告 学生 指导教师: 2012 年 7 月 7 日 实习题目 迷宫一、任务描述及要求 任意确定一个迷宫的规模和形态,用非递归的方法走出迷宫,并输出至少一条通路的路径。
(75 分)基本要求: 迷宫的存储结构由学生自行选择。
合理设计窗口界面,首先创建一个迷宫,迷宫的元素可以预先设计好,也可以通过界面建立或修改,建立后的迷宫在窗口界面上显示出来;通过单击“开始”按钮,显示从入口到出口的行进路线,迷宫的显示尽量美观逼真。
功能菜单或按钮自行设计,以合理为目的。
(20 分)扩展要求: 动态显示在迷宫中的行进、回溯路线。
二、概要设计1.抽象数据类型链式栈。
2.整个程序包含功能模块及模块间的调用关系 设置模块 编辑模块 自动演示模块 初始化模块 自动演示线程回调三、详细设计1.虚拟实现 即数据结构的 C语言描述 template // 栈节点定义struct stackNode T data stackNode link stackNodestackNode ptr NULLlink ptr //仅初始化指针成员的初始函数. stackNodeconst T dstackNodeptrNULLdatadlinkptr //初始化数据与指针成员的构造函数. stackNodetemplate //栈类定义class stackprivate: stackNode top // 栈顶元素public: stack:topNULL void makeempty // 置 栈空 virtual stackstack::makeempty //析构函数 void pushT x //入栈 bool popT x // 出栈 int getSizeconst // 获得栈元素个数 bool gettopT x const // 获得栈顶元素 bool Isempty const return topNULLtrue:false //判栈空2.抽象数据类型中定义的操作算法实现 用伪代码描述(见源代码)3.函数之间的调用关系 。
工程名为:MistyRainMaze(烟雨迷宫)CMistyRainMazeView OnSetting OnAutoPlay AutoPlayProc InitGame DrawBlock 链式栈的封装操作四、调试分析1.程序在调试过程中出现的问题及解决方法 由于之前准备充分,程序编写过程中没有遇到多少问题,很快就解决了。
CSDN、pudn 及百度文库是解决问题的快捷通道,Visual Assist X 是避免不必要错误产生的根本之道。
2.算法的时间复杂度分析 Omn可以考虑用 A或 B算法进行改进。
五、测试结果 根据一组提供的测试数据得到什么样的结果六、心得体会七、实现工程 首先新建一个基于单文档的工程 MistyRainMaze,在第四步中注意 View 类的基类选择 CScrollView,然后在MistyRainMazeView.h 的 CMistyRainMazeView 类前面加入宏定义及线程回调声明。
include stack.hif _MSC_VER 1000pragma onceendif // _MSC_VER 1000struct AutoPlayPARAM int m_nMaze//迷宫数组 UINT m_nMazeRowSize//迷宫行规模 UINT m_nMazeColSize//迷宫列规模 int m_nRowStart//起点位置 int m_nColStart// int m_nRowEnd//终点位置 int m_nColEnd// CPoint m_ptStart//图像左上角坐标 int m_ntimedelay//演示延迟时间 CDC pDC UINT m_nRowSpace//迷宫行距 UINT m_nColSpace//迷宫列距typedef enum tagCurrorState CURROR_STAND//标准光标 CURROR_BLOCK//画墙时的光标 CURROR_START//画起点光标 CURROR_END//画终点光标 CURROR_EREASE//擦出光标CurrorState// //数组中 0 代表通路 1 代表墙 2 代表起点 3 代表终点// typedef enum tagPositionState// // BACKGROUNDBLOCKSTARTEND// PositionState//typedef struct tagitems int row int col int diritems//定义位置偏移typedef struct tagoffset int row int coloffset//偏移数组static DWORD WINAPI AutoPlayProc LPVOID lpParameter // thread data // 自动演示线程回调函数添加图像资源及光标资源标好 ID 号。
为 CMistyRainMazeView 类添加成员变量及函数private: int m_nMaze//迷宫数组 UINT m_nMazeRowSize//迷宫行规模 UINT m_nMazeColSize//迷宫列规模 UINT m_nRowSpace//迷宫行距 UINT m_nColSpace//迷宫列距 CPoint m_ptStart//图像左上角坐标 BOOL m_bStop//初始停止标志为