• 个人简介

    https://liferestart.syaro.io/public/index.html 人身重开模拟器

    #include<bits/stdc++.h>
    #include<windows.h>
    #include<conio.h>
    using namespace std;
    int mat[505][505]; 
    int n,m; 
    int ix,iy,ex,ey,gx1,gy1,gx2,gy2,gx3,gy3,gx4,gy4;
    int cnt = 0;
    void HideCursor()
    {
    	CONSOLE_CURSOR_INFO cursor_info ={1,0};
    	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
    }
    void print_maze();
    
    void gz(int &x,int &y)
    {
    	
    	int dx[4]={0,0,-1,1};
    	int dy[4]={1,-1,0,0};
    	int dir[4]={0,1,2,3};
    	random_shuffle(dir,dir+4);//打乱数组 
    	mat[x][y] = 1;
    //	Sleep(100);
    	for(int i=0;i<4;i++)
    	{
    		int xx = x + dx[dir[i]];
    		int yy = y + dy[dir[i]];
    		if(xx>1&&xx<n&&yy>1&&yy<m)
    		{
    			if(mat[xx][yy]==1)
    			{
    				x = xx;
    				y = yy;
    				mat[x][y] = 6;
    				return ;	
    			}
    		}
    	}	
    }
    
    
    void create_maze(int x,int y)
    {
    	
    	int dx[4]={0,0,-1,1};
    	int dy[4]={1,-1,0,0};
    	int dir[4]={0,1,2,3};
    	random_shuffle(dir,dir+4);//打乱数组 
    	mat[x][y] = 1;
    	print_maze();
    //	Sleep(100);
    	for(int i=0;i<4;i++)
    	{
    		int xx = x + dx[dir[i]];
    		int yy = y + dy[dir[i]];
    		if(xx>1&&xx<n&&yy>1&&yy<m)
    		{
    			if(mat[xx+1][yy]+mat[xx-1][yy]+mat[xx][yy+1]+mat[xx][yy-1]<=1)
    			{
    				if(mat[xx][yy]==0)
    				{
    					create_maze(xx,yy);	
    				}
    			}
    		}
    	}	
    }
    void print_maze()
    {
    //	system("cls"); 
    	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){0,0});
    	cnt++;
    	if(cnt == 6)
    	{
    		for(int i=1;i<=n;i++)
    		{
    			
    			for(int j=1;j<=m;j++)
    			{
    				if(mat[i][j]==4)
    				{
    					mat[i][j]=5;
    					if(i!=1)mat[i-1][j]=5;
    					if(i!=n)mat[i+1][j]=5;
    					if(j!=1)mat[i][j-1]=5;
    					if(j!=m)mat[i][j+1]=5;
    				}
    				
    			} 
    //			cout << endl;
    		}
    	}
    	if(cnt == 8)
    	{
    		for(int i=1;i<=n;i++)
    		{
    			
    			for(int j=1;j<=m;j++)
    			{
    				if(mat[i][j]==5)
    				{
    					mat[i][j]=1;
    					if(i!=1)mat[i-1][j]=1;
    					if(i!=n)mat[i+1][j]=1;
    					if(j!=1)mat[i][j-1]=1;
    					if(j!=m)mat[i][j+1]=1;
    				}
    			} 
    
    		}
    		cnt = 0;
    	}
    	for(int i=1;i<=n;i++)
    	{
    		
    		for(int j=1;j<=m;j++)
    		{
    			if(mat[i][j]==1) cout << "  ";
    			else if(mat[i][j]==0) 
    			{
    //				system("color 5");
    				cout << "[]"; 
    			}	
    			else if(mat[i][j]==2) 
    			{
    //				system("color 6");
    				cout << "我"; 	
    			}
    			else if(mat[i][j]==3)
    			{
    //				system("color 7");
    				cout << "$$";
    			}  
    			else if(mat[i][j]==4)
    			{
    //				system("color 8");
    				cout << "蛋";
    			} 	
    			else if(mat[i][j]==5) 
    			{
    //				system("color 9");
    				cout << "轰";	
    			}	
    			else if(mat[i][j]==6)
    			{
    //				system("color A");
    				cout << "鬼";
    			} 	
    //			else if(mat[i][j]==5) cout << "蛋";	
    		} 
    		cout << endl;
    	}
    }
    void print_maze2()
    {
    //	system("cls"); 
    	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),(COORD){0,0});
    	cnt++;
    	if(cnt == 6)
    	{
    		int zdfw=3;//炸弹范围 
    		for(int i=1;i<=n;i++)
    		{
    			
    			for(int j=1;j<=m;j++)
    			{
    				if(mat[i][j]==4)
    				{
    					mat[i][j]=5;
    					for(int p=i-zdfw;p<=i+zdfw;p++)
    					{
    						for(int k=j-zdfw;k<=j+zdfw;k++)
    						{
    							if((i==p||j==k)&&(p>1&&p<n&&k>1&&k<=m&&mat[p][k]!=0))
    							{
    								if(gx1==p&&gy1==k) mat[gx1][gy1]=1,gx1=n+1,gy1=m+1;
    								if(gx2==p&&gy2==k) mat[gx2][gy2]=1,gx2=n+1,gy2=m+1;
    								if(gx3==p&&gy3==k) mat[gx3][gy3]=1,gx3=n+1,gy3=m+1;
    								if(gx4==p&&gy4==k) mat[gx4][gy4]=1,gx4=n+1,gy4=m+1;
    								mat[p][k] = 5;
    							}
    						}
    					}
    				}
    				
    			} 
    //			cout << endl;
    		}
    	}
    	if(cnt == 8)
    	{
    		for(int i=1;i<=n;i++)
    		{
    			
    			for(int j=1;j<=m;j++)
    			{
    				if(mat[i][j]==5)
    				{
    					mat[i][j]=1;
    				}
    			} 
    
    		}
    		cnt = 0;
    	}
    	int fw=8;
    	for(int i=1;i<=n;i++)
    	{
    		
    		for(int j=1;j<=m;j++)
    		{
    			if(i>=ix-fw&&i<=ix+fw&&j>=iy-fw&&j<=iy+fw)
    			{
    				if(mat[i][j]==1) cout << "  ";
    				else if(mat[i][j]==0) cout << "[]"; 	
    				else if(mat[i][j]==2) cout << "我"; 	
    				else if(mat[i][j]==3) cout << "$$"; 
    				else if(mat[i][j]==4) cout << "蛋";	
    				else if(mat[i][j]==5) cout << "轰";		
    				else if(mat[i][j]==6) cout << "鬼";		
    			}
    			else
    			{
    				cout << "  ";
    			}
    		} 
    		cout << endl;
    	}
    }
    void init()
    {
    	memset(mat,0,sizeof(mat));	
    	system("cls");
    	cout << "请输入地图大小n*m" << endl;  
    	cin >> n >> m;
    	HideCursor();
    	create_maze(n/2,m/2);
    	print_maze();
    }
    int main()
    {
    	srand(time(0));
    	HideCursor(); 
    	init();
    	ix = rand()%(3)+2;
    	iy = rand()%(3)+2;
    	ex = rand()%(3)+n-4;
    	ey = rand()%(3)+m-4;
    	gx1 = rand()%n;
    	gy1 = rand()%m;
    	gx2 = rand()%n;
    	gy2 = rand()%m;
    	gx3 = rand()%n;
    	gy3 = rand()%m;
    	gx4 = rand()%n;
    	gy4 = rand()%m;
    	mat[ix][iy] = 2;
    	mat[ex][ey] = 3;
    	print_maze();
    	int step = 0;
    	int dfx = 1;
    	while(1)
    	{
    		char dir = getch();
    		gz(gx1,gy1);
    		gz(gx2,gy2);
    		gz(gx3,gy3);
    		gz(gx4,gy4);
    		if(dir==72&&mat[ix-1][iy]!=0)
    		{
    			mat[ix][iy] = 1;
    			mat[ix-1][iy] = 2;
    			ix--;	
    			++step; 
    			dfx = 1;
    		}
    		if(dir==80&&mat[ix+1][iy]!=0)
    		{
    			mat[ix][iy] = 1;
    			mat[ix+1][iy] = 2;
    			ix++;
    			++step; 
    			dfx = 2;
    		}
    		if(dir==75&&mat[ix][iy-1]!=0)
    		{
    			mat[ix][iy] = 1;
    			mat[ix][iy-1] = 2;
    			iy--;
    			++step; 
    			dfx = 3;
    		}
    		if(dir==77&&mat[ix][iy+1]!=0)
    		{
    			mat[ix][iy] = 1;
    			mat[ix][iy+1] = 2;
    			iy++;
    			++step; 
    			dfx = 4;
    		}
    		if(dir==' ')
    		{
    			cnt= 0;
    			if(dfx == 1 && mat[ix-1][iy]==1 )mat[ix-1][iy] = 4;
    			if(dfx == 2 && mat[ix+1][iy]==1)mat[ix+1][iy] = 4;
    			if(dfx == 3 && mat[ix][iy-1]==1)mat[ix][iy-1] = 4;
    			if(dfx == 4 && mat[ix][iy+1]==1)mat[ix][iy+1] = 4;
    		} 
    		print_maze2();
    		if(mat[ix][iy]==5)
    		{
    			cout << "被自己的炸弹干掉了!!!" << endl;
    			char c= getch(); 
    			return 0;
    		} 
    		if(ix==gx1&&iy==gy1)
    		{
    			cout << "见鬼了" << endl;
    			char c= getch(); 
    			return 0;
    		} 
    		if(ix==gx2&&iy==gy2)
    		{
    			cout << "见鬼了" << endl;
    			char c= getch(); 
    			return 0;
    		} 
    		if(ix==gx3&&iy==gy3)
    		{
    			cout << "见鬼了" << endl;
    			char c= getch(); 
    			return 0;
    		} 
    		if(ix==gx4&&iy==gy4)
    		{
    			cout << "见鬼了" << endl;
    			char c= getch(); 
    			return 0;
    		} 
    		if(ix==ex&&iy==ey)
    		{
    			break;
    		}
    	}
    	cout << "恭喜你找到了宝藏,共用了" << step << " 步"<< endl; 
    	cout << "按任意键退出程序"<<endl; 
    	char c= getch(); 
    	return 0;
    }
    
    
  • 最近活动