社区讨论

迷宫生成 有墙隔断 无法通行 求调

学术版参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhj3setz
此快照首次捕获于
2025/11/03 20:15
4 个月前
此快照最后确认于
2025/11/03 20:15
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int n=time(0)%1145141919,m=time(0)%81011457;
int random1(int m)
{
	long long ran;
	ran=time(0);
	for(int q=1;q<=10;q++)
	{
		ran=ran*n+m;
	ran=ran%100000000/10000;
	n++;m++;
	}
	return ran;
}
int main()
{
	
	int con[101]={0};
	int connect[101][4]={0};
	int r[101]={0};
	int s=1;
	for(int i=1;i<=99;i++)
	{
		int b=1;
		r[i]=s;
		con[s]=1;
		int f;
		while(1)
		{
		f=random1(4);
		if((f==0&&s%10!=1)&&(connect[r[i]][0]==0&&con[s-1]==0))
		{
			s=s-1;
			connect[r[i]][0]=1;
			connect[s][2]=1;
			break;
		}
		else if((f==1&&s+10<=100)&&(connect[r[i]][1]==0&&con[s+10]==0))
		{
			s=s+10;
			connect[r[i]][1]=1;
			connect[s][3]=1;
			break;
		}
		else if((f==2&&s%10!=0)&&(connect[r[i]][2]==0&&con[s+1]==0))
		{
			s=s+1;
			connect[r[i]][2]=1;
			connect[s][0]=1;
			break;
		}
		else if((f==3&&s-10>0)&&(connect[r[i]][3]==0&&con[s-10]==0))
		{
			s=s-10;
			connect[r[i]][3]=1;
			connect[s][1]=1;
			break;
		}
		else
		{
			if(s%10!=1&&(connect[r[i]][0]==0&&con[s-1]==0))
			continue;
			else if(s+10<100&&(connect[r[i]][1]==0&&con[s+10]==0))
			continue;
			else if(s%10!=0&&(connect[r[i]][2]==0&&con[s+1]==0))
			continue;	
			else if(s-10>0&&(connect[r[i]][3]==0&&con[s-10]==0))
			continue;
			else
			{
				s=r[i-b];
				b++;
			}
			continue;	
		}
		}
		Sleep(500);
		system("cls");
		for(int i=1;i<=21;i++)
	cout<<"##";
	cout<<endl;
	for(int i=0;i<=9;i++)
	{
		cout<<"##";
		for(int j=1;j<=9;j++)
		{
			cout<<"  ";
			if(connect[i*10+j][2]==1)
			cout<<"  ";
			else
			cout<<"##"; 
		}
		cout<<"  ##"<<endl;
		cout<<"##";
		for(int j=1;j<=10;j++)
		{
			if(connect[i*10+j][1]==1)
			cout<<"  ";
			else
			cout<<"##";
			cout<<"##";
		}
		cout<<endl;
	}
	}
	
	system("cls");
	
	for(int i=1;i<=21;i++)
	cout<<"##";
	cout<<endl;
	for(int i=0;i<=9;i++)
	{
		cout<<"##";
		for(int j=1;j<=9;j++)
		{
			cout<<"  ";
			if(connect[i*10+j][2]==1)
			cout<<"  ";
			else
			cout<<"##"; 
		}
		cout<<"  ##"<<endl;
		cout<<"##";
		for(int j=1;j<=10;j++)
		{
			if(connect[i*10+j][1]==1)
			cout<<"  ";
			else
			cout<<"##";
			cout<<"##";
		}
		cout<<endl;
		
	}
	while(1)
	{
	}
}

回复

1 条回复,欢迎继续交流。

正在加载回复...