无语的迷宫

make:(制作地图)

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 bool a[40][1001],b[40][1001];
 4 int h[1601][2],dx[4]={0,1,0,-1},dy[4]={1,0,-1,0},sx=1,sy=1,zx,zy,n;
 5 bool bfs(){
 6     int x,y,nx,ny,i,j,pf=1,pr=2;
 7     for(i=1;i<=n;i++)
 8         for(j=1;j<=n;j++)
 9         b[i][j]=a[i][j];
10     while(pf<pr){
11         x=h[pf][0],y=h[pf++][1];
12         for(i=0;i<4;i++){
13             nx=x+dx[i],ny=y+dy[i];
14             if(b[nx][ny]){
15                 h[pr][0]=nx,h[pr++][1]=ny;
16                 b[nx][ny]=0;
17                 if(nx==zx&&ny==zy)return 1;
18             }
19         }
20     }
21     return false;
22 }
23 void randx(){
24     for(int i=1;i<=n;i++)
25         for(int j=1;j<=n;j++)
26         a[i][j]=rand()%2;
27     a[sx][sy]=a[zx][zy]=1;
28 }
29 int main(){
30     cout<<"Size:";
31     freopen("migong.txt","w",stdout);
32     cin>>n;cout<<n<<endl;
33     srand((int)time(NULL));
34     h[1][0]=sx,h[1][1]=sy;zx=zy=n;
35     while(1){
36         randx();
37         if(bfs())break;
38     }
39     for(int i=1;i<=n;i++){
40         for(int j=1;j<=n;j++)
41         if(a[i][j])printf("1 ");
42         else printf("0 ");
43         printf("
");
44     }
45     system("start go.exe");
46     return 0;
47 }
View Code

go:(开始游戏)

 1 #include<bits/stdc++.h>
 2 #include<conio.h>
 3 using namespace std;
 4 int a[40][40],n;
 5 void out(){
 6     for(int i=1;i<=n;i++){
 7         for(int j=1;j<=n;j++){
 8         if(a[i][j]==1)cout<<'.';
 9         if(a[i][j]==2)cout<<'*';
10         if(a[i][j]==0)cout<<'#';
11     }
12     cout<<endl;
13     }
14 }
15 int main(){
16     freopen("migong.txt","r",stdin);
17     cin>>n;
18     int i,j,x,y;
19     for(i=1;i<=n;i++)
20         for(j=1;j<=n;j++)
21         scanf("%d",&a[i][j]);
22     a[1][1]=2;i=1;j=1;
23     out();
24     char k;
25     while(i!=n||j!=n){
26         k=getch();
27         x=i;y=j;
28         if(k=='w')i--;if(k=='s')i++;if(k=='a')j--;if(k=='d')j++;
29         a[1][1]=1;if(a[i][j]==0)i=x,j=y;
30         a[i][j]=2;
31         system("cls");
32         out();
33         a[i][j]=1;
34     }
35     cout<<"YOU WIN!"<<endl;
36     k=getch();
37 }
View Code

两个文件编译后放在同一个文件夹里,运行make.exe。

原文地址:https://www.cnblogs.com/mimiorz/p/7274499.html