最初用C语言写的,写了一天多写好。后来又改用C++,由于对C++不是很熟悉,改成C++用了三四天才改好。
程序是在VC++6.0中写的,新建一个Win32 Application即可。
最初觉得程序的关键应该是求解迷宫,后来发现求解迷宫很简单,难点是如何生成迷宫。 这里采用接合图的深度优先遍历,生成迷宫的算法,定义了搜索步长以便控制迷宫分支多少和分支深度。 由于程序中多处用到链表,所以对于迷宫求解部分也是用链表,没有用栈。 代码比较多,就不出了,只列举了C和C++主要全局变量和函数,时间有限本人就不去一一编辑代码了;想要全部代码私聊我
///
//C++主要变量和函数定义
//maze.h///
//全局变量
#ifndef _GLOBAL_VAR_
#define _GLOBAL_VAR_
#include "MazeClass.h"
class CMaze *game = NULL; //迷宫类对象指针
class CRoom **map; //游戏map指针
HWND hWndMain; //主窗口句柄
HBITMAP h_MemBm = NULL; //内存位图
HDC h_MemDC = NULL; //内存DC
RECT rCliRet; //游戏窗口大小
HBRUSH hBrushes[10]; //绘制方块的画刷
#endif
//LinkList.h///
#ifndef _LINK_LIST_H
#define _LINK_LIST_H
#include <iostream.h>
template <class T>
class Node
{
private:
Node<T> *nextptr;
public:
T data;
Node();
~Node();
Node <T> *next() const;
Node(const T &item, Node<T> *ptrnext=NULL);
void setNext(Node<T> *ptrnext=NULL);
};
template <class T>
class LinkList
{
private:
Node<T> *head;
Node<T> *tail;
Node<T> *curr;
Node<T> *getNode(const T &item, Node<T> *ptrnext=NULL);
void freeNode(Node <T> *p);
int size;
public:
LinkList();
~LinkList();
Node<T> *next();
Node<T> *current();
Node<T> *first();
Node<T> *last();
Node<T> *findNode(int index);
Node<T> *findNode(const T &item); //此功能需要模板类重载等于运算符
void reset();
int getSize();
int insertFront(const T &item);
int insertTail(const T &item);
int insertAfter(const T &item, int index);
int deleteFront(T *item);
int deleteTail(T *