扫雷(搬运)

作者:    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;
}

评论区

竟然没有人发布评论!