当前位置:首页 > C++迷宫游戏
#include
using namespace std;
void mazeGenerator(char **&,int ,int,int,int ); //声明生成迷宫的函数
void mazeTraverse(char **& ,int ,int ,int ); //声明走迷宫的函数 int main() {int m,n;
cout<<\请输入迷宫的长和宽:\; cin>>m>>n;
char**a; //定义二维指针,记录二维数组 a=new char*[m];
for(int i=0;i a[i]=new char[n]; //申请二维动态数组 srand (int (time (0))); //调用种子函数,作为rand函数的启动值,参数为time(0)时间函数返回的系统当前时间 int p=rand()%(m-2)+1,q=rand()%(m-2)+1; //用随机数赋值给p、q,p记录入口位置,q记录出口位置 int k=p; //k记录走迷宫到达的位置,初始位置为入口 cout<<\迷宫生成:\< cout<<\现在进行走迷宫:\< void mazeGenerator(char**&a,int m,int n,int p,int q)//用于生成任意大小的迷宫,**&a引用二维指针数组, //m、n用于说明迷宫(数组)大小,p、q用于说明出入口的位置 {int i,j; for(i=0;i for(int i=1;i else a[i][j]='.';} a[p][0]='x',a[p][1]='.';a[q][n-1]='.',a[q][n-2]='.'; for(i=0;i cout< void mazeTraverse(char **&a,int k,int m,int n)// 用于实现走迷宫,并输出每移动一步后迷宫的状态, //**&a引用二维指针数组,k记录走迷宫时所到达的位置,m、n用于说明迷宫(数组)大小 {int i,j,t=2,l=0;char ch; do {switch(t) //a[k][l]为当前位置 // t= // 2: a[k+1][l] 向下 // 1: a[k][l+1] 向右 // 4: a[k-1][l] 向上 // 3: a[k][l-1] 向左 // 向下—>向左—>向上—>向右—>向下...... 可实现贴墙走迷宫 {case 2: {if(a[k+1][l]=='#') {if(a[k][l+1]=='#') { if(a[k-1][l]!='#') {a[k-1][l]='x'; k=k-1; t=1;} else {a[k][l-1]='x';l=l-1;t=4;} } else { a[k][l+1]='x'; l=l+1; t=2; } } else { a[k+1][l]='x'; k=k+1; t=3; }; do {cin.get(ch);} while(ch!='\\n'); //按回车键走一步,并输出迷宫走这一步后的状态 for(i=0;i {if(a[k][l+1]=='#') {if(a[k-1][l]=='#') {if(a[k][l-1]!='#') {a[k][l-1]='x'; l=l-1; t=4;} else{ a[k+1][l]='x';k=k+1;t=3;} } else {a[k-1][l]='x';
共分享92篇相关文档