怎么使用c++实现迷宫游戏

  介绍

这篇文章主要介绍了怎么使用c++实现迷宫游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

c++实现迷宫游戏的具体代码如下

//文件的输入,有墙   # include   # include   # include   # include   using  namespace 性传播疾病;   const  int  max1=100 * 100;,,,//加入墙   const  int  max2=102;   bool 价值[max2] [max2];,,,//记录是否被访问过   int 迷宫[max2] [max2];,,,,//迷宫的大小   int  n m;,,,//输入迷宫的长和宽   ofstream 输出文件(“path.txt");,,,//文件保存迷宫及输出的路径   struct  Point ,,//栈中的数据   {   ,int  x;   ,int  y;   };   struct 堆栈   {   ,int 最高;   ,Point 路径[max1];,,//存坐标点的数组栈   ,堆栈()   ,{   ,最高=1,,,,//栈中从0开始存数据   ,}   ,bool 空(),,//检验是否为空   ,{   ,如果(顶部==1)return 真实;   其他的,   return 才能;假;   ,}   ,void  Clear(),,,//清空栈   ,{   ,最高=1;   ,}   ,void 推动(Point  p),,,//进栈   ,{   ,前+ +;   ,路径(顶级)=p;   ,}   ,Point  Pop(),,,,//返回栈顶元素   ,{   ,return 路径(最高),   ,}   ,void  Delete_Pop(),,,//删除顶栈元素   ,{   ,最高,;   ,}   ,int  Y_N_Push ()   ,{   ,int  x=路径(顶级)方式;   路径,int  y=[上].y;   ,如果(x<1 | | y<1 | | x> n | | y> m | | !价值[x] [y] | |迷宫[x] [y]),,,,//不符合要求   ,{   价值才能[x] [y]=false;,,,//标记这个点被访问过(不能任意做标记)   return 才能,1,,,,,,,,,,   ,}   其他的,   如果才能((x==n),和(y==m)),,,//已经找到出口,不要标记,后面直接跳出   return 才能;2;   其他的才能   {才能   价值才能[x] [y]=false;,,,//标记这个点被访问过   return 才能;3,,,,,//可以进栈   ,,}   ,}   ,void 输出(),,,//输出栈中的路径   ,{   ,int 我;   ,(i=0; i<,我+ +)   ,{   cout<才能;& lt;“(“& lt; & lt;路径[我].x<& lt;“,“& lt; & lt;路径[我].y<& lt;“)“& lt; & lt;“——→“;   ,}   ,cout<& lt;“(“& lt; & lt;路径[我].x<& lt;“,“& lt; & lt;路径[我].y<& lt;“)“& lt; & lt; endl;   ,outfile<& lt;“该迷宫的路径为:“& lt; & lt; endl;,,,//文件的输出   ,(i=0; i<,我+ +)   ,{   outfile<才能;& lt;“(“& lt; & lt;路径[我].x<& lt;“,“& lt; & lt;路径[我].y<& lt;“)“& lt; & lt;“——→“;   ,}   ,outfile<& lt;“(“& lt; & lt;路径[我].x<& lt;“,“& lt; & lt;路径[我].y<& lt;“)“& lt; & lt; endl;   ,}   };   Stack 堆栈;,,,,,//不可以放在栈的定义前面   bool  Test_value(),,,,,//检验每个节点是否是否被访问过,全访问过了则为真,假为没有全部访问过   {   ,int  i, j。   ,bool  t=true;   ,(i=1; i<=n;我+ +)   ,(j=1; j<=m; j + +)   如果才能(价值[我][j] !=false)   {才能   t=false才能;   打破才能;   ,,}   ,return  t;   }   int 法官(),,,,,,,,,,,   {   ,Point  t;   ,int  frage=0,,,,,//先规定先向右   ,而(frage==0)   ,{   ,t=stack.Pop();,,,//返回栈顶元素   ,t.y=t.y + 1,,,//向右,   ,stack.Push (t);   ,如果(stack.Y_N_Push()==1),,,//不符合要求的节点   ,{   stack.Delete_Pop才能();   t=才能stack.Pop ();   t.x才能=t.x + 1,,,,,,,//向下   stack.Push才能(t);   如果才能(stack.Y_N_Push ()==1)   {才能   stack.Delete_Pop才能();   t=才能stack.Pop ();   t.y=t.y-1;才能,,,,,//向左   stack.Push才能(t);   如果才能(stack.Y_N_Push ()==1)   {才能   ,,stack.Delete_Pop ();   ,,t=stack.Pop ();   ,,t.x=t.x-1;,,,,//向上   ,,stack.Push (t);   ,,如果(stack.Y_N_Push ()==1)   ,,{   ,,frage=4,,,,,//这个点4个方向都不成立   ,,stack.Delete_Pop ();   ,,}   ,,}   ,,},,,,,,   ,}   ,如果(stack.Y_N_Push ()==2)   ,{   frage才能=5,,,,,//找到了出口并跳出   打破才能;   ,}   ,}   return  frage;   }   void 搜索(),,,,,,,,,,   {   ,stack.Clear ();   ,Point  u;   ,u.x=1;   ,u.y=1;   ,stack.Push (u);   ,价值[1][1]=false;   ,而(真正的)   ,{   法官,int  t=();,,,,   ,如果(t==5),,,//找到了路   ,{   cout<才能;& lt;“找到了能通的路,路径为(用那个点的坐标表示):“& lt; & lt; endl;   stack.Output才能();   打破才能;   ,}   ,如果(t==4) stack.Delete_Pop();,,,//退回一个点继续找   ,如果((Test_value ()==true) | | (stack.top==1)),,,//很重要的条件,stack.top==1,否则的话当有个点四周都不能通过的话,而且前面的点也不能通的话,就没有通的路   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么使用c++实现迷宫游戏