作者: qwerty 管理员
标签: C++
创建日期:2024年10月21日 17:49
浏览量:118
//10x10扫雷游戏低配版——无标记雷+输入坐标扫雷+空白自动展开
#include<bits/stdc++.h>
using namespace std;
bool vis[15][15];
char s[15][15];
char a[15][15];
int dirx[8]={1,-1,0,0,-1,-1,1,1};
int diry[8]={0,0,1,-1,1,-1,-1,1};
void print()
{
for(int i=1;i<=10;i++)
{
for(int j=1;j<=10;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}
int sum;
void dfs(int x,int y)
{
vis[x][y]=1,sum++,a[x][y]=s[x][y];
if(s[x][y]!='0') return;
for(int i=0;i<8;i++)
{
int tx=x+dirx[i],ty=y+diry[i];
if(tx&&ty&&tx<=10&&ty<=10&&!vis[tx][ty]&&s[x][y]>='0'&&s[x][y]<='9')
{
dfs(tx,ty);
}
}
}
int main()
{
vis[0][0]=1;
srand((unsigned)time(NULL));
for(int i=1;i<=15;i++)
{
int x=0,y=0;
while(vis[x][y])
{
x=rand()%10,y=rand()%10;
x=x%10+1,y=y%10+1;
}
vis[x][y]=1;s[x][y]='*';
}
for(int i=1;i<=10;i++)
{
for(int j=1;j<=10;j++)
{
a[i][j]='.';
if(s[i][j]!='*')
{
s[i][j]='0'+(s[i-1][j-1]=='*')+(s[i-1][j]=='*')+(s[i-1][j+1]=='*')+(s[i][j-1]=='*')+
(s[i][j+1]=='*')+(s[i+1][j-1]=='*')+(s[i+1][j]=='*')+(s[i+1][j+1]=='*');
}
}
}
memset(vis,0,sizeof(vis));
print();puts("");
while(sum<85)
{
int x,y;
cin>>x>>y;
if(s[x][y]=='*'){puts("You Died!!!!!!");exit(0);}
if(s[x][y]=='0') dfs(x,y);
else sum++,a[x][y]=s[x][y],vis[x][y]=1;
print();puts("");
}
puts("You Win the Game!!!!!!!!");
return 0;
}