一聚教程网:一个值得你收藏的教程网站

热门教程

迷宫游戏控制台版C++代码

时间:2022-06-25 04:31:13 编辑:袖梨 来源:一聚教程网

本文实例分享了C++设计的一个可以调整大小的迷宫游戏,给定迷宫的入口。如果存在出口,程序能够显示行走的路径,并最终到达出口,并输出“成功走出迷宫”;如果不存在出口,程序也能够显示行走的过程,并最终回退到入口,并输出“回退到入口”。

//这是一个迷宫游戏
#include
#include
#include/*用于生成随机数,形成随机变化的迷宫*/
#include/*用于输出格式控制,使得生成的迷宫外观规则*/
using namespace std;
/*生成迷宫的函数mazegenerator*/
char*mazegenerator(int m,int n)
{
 int i,j,k;/*计数器*/
 char *p=new char[m*n];/*用长度为m*n的数组存放mxn大小的迷宫*/
 srand(int(time(0)));/*用于生成随机数*/
 if(m<10||n<10)//阶数小的时候密一点,增加趣味
 for(i=0;im*(n-1))||(((y+1)%m)==0)))/*到达边界之前执行循环走迷宫*/
 {
 /*判断右的方向,如果右为'.',则向右走*/
 if(y-x==1)z=y+m;
 if(y-x==m)z=y-1;
 if(y-x==-m)z=y+1;
 if(y-x==-1)z=y-m;
 /*右不为'.'时,向y的前方走*/
 if(p[z]=='#')
 {
 /*判断y的前方,如果前为'.',则向前走*/
 if(y-x==1)z=y+1;
 if(y-x==m)z=y+m;
 if(y-x==-m)z=y-m;
 if(y-x==-1)z=y-1;
 /*如果前方为'#',要向左走*/
 if(p[z]=='#')
 {
 /*判断左的位置*/
 if(y-x==1)z=y-m;
 if(y-x==m)z=y+1;
 if(y-x==-m)z=y-1;
 if(y-x==-1)z=y+m;
 /*如果左为'#',为死路,需要向后走*/
 if(p[z]=='#')z=x;
 }
 }
 p[z]='x';/*最后都要让z的位置为'x',表示走过的痕迹*/
 showmaze(p,m,n);
 cout<2,n>2):"<>m>>n)
 {
 char*a=mazegenerator(m,n);
 showmaze(a,m,n);
 cout<2),n否则,按ctrl+z,再按enter结束"<

热门栏目