本文实例为大家分享了C++实现迷宫游戏的具体代码,供大家参考,具体内容如下
运用并查集自动生成迷宫地图,并运用队列和栈寻找迷宫通路并打印出来
#include#include #include #include #include using namespace std; using std::queue; using std::stack; typedef struct Point { int x; int y; int d;//方向 若方向为-1,则表示起点 }Point; queue mqueue; stack mstack; Point pos, pos1; int m, n;//迷宫行(tm-1)/2和列(tn-1)/2 int tm, tn;//实际作图 int x, y, tx1, tx2, ty1, ty2;//点坐标 int d; int s[10000000]; int maze[1000][1000], mark[1000][1000];//最大迷宫 int sign[4][2] = { { -1,0 },{ 1,0 },{ 0,-1 },{ 0,1 } };//上下左右四个方向 0上 1下 2上 3下 Point start; int Find_x(int x); void unionSets(int node1, int node2); void Init(); int getAdd(int x, int y); void foundpath(); void fixmaze(); int connected(int node1, int node2); void Findpath(); void changemaze(); int main() { Init(); cout <<"请输入迷宫规模2x-1,2y-1:(x y)" < > m >> n; tm = m * 2 + 1; tn = n * 2 + 1; start.x = 1; start.y = 1; start.d = -1; mqueue.push(start); for (int i = 0; i 0) { if (mstack.top().x == i - sign[k][0] && mstack.top().y == j - sign[k][1]) { i = i - sign[k][0]; j = j - sign[k][1]; k = mstack.top().d; maze[i][j] = -1; if (!mstack.empty()) mstack.pop(); } else if (!mstack.empty()) mstack.pop(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。