minesweeper

· · 科技·工程

更新日志(仅-1.2.0之后)

-1.x

-1.0.0

/*
Compiler: C++17 +
*/

#include<iostream>
#include<windows.h>
#include<conio.h>
#include<ctime>
#include<cstdlib>
#include<cstring> 
using namespace std;

struct game_set{
    int n,m,cnt;
};

int fl[60][60];
int status[60][60];

bool judgeAdj(int x1,int y1,int x2,int y2){
    return max(abs(x1-x2),abs(y1-y2))<=1;
}

int limit(int mod){
    return RAND_MAX-RAND_MAX%mod;
}

bool judgeKdLt(char ch,char tgt){
    return ch==tgt||ch==tgt-32;
}

bool judgeKd(char ch,char tgt){
    return ch==tgt;
}

game_set menu(){
    cout<<"Minesweeper -1.0.\n";
    cout<<"[0] Easy   (9,9,10)\n";
    cout<<"[1] Medium (16,16,40)\n";
    cout<<"[2] Expert (16,30,99)\n";
    cout<<"[3] Custom\n";
    char ch=getch();
    while(1){
        if(judgeKd(ch,'0'))return {9,9,10};
        else if(judgeKd(ch,'1'))return {16,16,40};
        else if(judgeKd(ch,'2'))return {16,30,99};
        else if(judgeKd(ch,'3')){
            system("clear");
            game_set gs;
            cout<<"Row:";cin>>gs.n;
            cout<<"Column:";cin>>gs.m;
            cout<<"Mine count:";cin>>gs.cnt;
            return gs;
        }else{
            system("clear");
            cout<<"Minesweeper 0.0.\n";
            cout<<"[0] Easy   (9,9,10)\n";
            cout<<"[1] Medium (16,16,40)\n";
            cout<<"[2] Expert (16,30,99)\n";
            cout<<"[3] Custom\n";
            cout<<"(Invaild operation)\n";
            ch=getch();
        }
    }
}

void game_init(game_set gs,int fx,int fy){
    auto [n,m,cnt]=gs;
    system("clear");
    memset(fl,0,sizeof fl);
    memset(status,0,sizeof status);
    while(cnt--){
        int cx,cy;
        do{
            cx=rand(),cy=rand(); 
        }while(cx<limit(n)&&cy<limit(m)&&!judgeAdj(cx,cy,fx,fy));
        fl[cx][cy]=-1;
        cnt--;
    }
    for(int i=0;i<n;i++)for(int j=0;j<m;j++){
        if(fl[i][j]==-1)continue;
        for(int ii=max(0,i-1);ii<=min(n-1,i+1);ii++)for(int jj=max(0,j-1);jj<=min(m-1,j+1);jj++){
            if(fl[ii][jj]==-1)fl[i][j]++;
        }
    }
}

int main(){
    game_set gs=menu();
    game_init(gs,0,0);
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(fl[i][j]==-1)cout<<"* ";
            else if(fl[i][j]==0)cout<<". ";
            else cout<<fl[i][j]<<" ";
        }
        cout<<"\n\n";
    } 
}

-1.0.1

/*
Compiler: C++17 +
*/

#include<iostream>
#include<windows.h>
#include<conio.h>
#include<ctime>
#include<cstdlib>
#include<cstring> 
using namespace std;
#define c++14

struct game_set{
    int n,m,cnt;
};

int fl[60][60];
int status[60][60];

bool judgeAdj(int x1,int y1,int x2,int y2){
    return max(abs(x1-x2),abs(y1-y2))<=1;
}

int limit(int mod){
    return RAND_MAX-RAND_MAX%mod;
}

bool judgeKdLt(char ch,char tgt){
    return ch==tgt||ch==tgt-32;
}

bool judgeKd(char ch,char tgt){
    return ch==tgt;
}

game_set menu(){
    cout<<"Minesweeper -1.0.\n";
    cout<<"[0] Easy   (9,9,10)\n";
    cout<<"[1] Medium (16,16,40)\n";
    cout<<"[2] Expert (16,30,99)\n";
    cout<<"[3] Custom\n";
    char ch=getch();
    while(1){
        if(judgeKd(ch,'0'))return {9,9,10};
        else if(judgeKd(ch,'1'))return {16,16,40};
        else if(judgeKd(ch,'2'))return {16,30,99};
        else if(judgeKd(ch,'3')){
            system("clear");
            game_set gs;
            cout<<"Row:";cin>>gs.n;
            cout<<"Column:";cin>>gs.m;
            cout<<"Mine count:";cin>>gs.cnt;
            return gs;
        }else{
            system("clear");
            cout<<"Minesweeper 0.0.\n";
            cout<<"[0] Easy   (9,9,10)\n";
            cout<<"[1] Medium (16,16,40)\n";
            cout<<"[2] Expert (16,30,99)\n";
            cout<<"[3] Custom\n";
            cout<<"(Invaild operation)\n";
            ch=getch();
        }
    }
}

void game_init(game_set gs,int fx,int fy){
    int n=gs.n,m=gs.m,cnt=gs.cnt;
    system("cls");
    memset(fl,0,sizeof fl);
    memset(status,0,sizeof status);
    while(cnt--){
        int cx,cy;
        do{
            cx=rand(),cy=rand(); 
            cout<<cx<<" "<<cy<<"\n";
        }while(cx<limit(n)&&cy<limit(m)&&!judgeAdj(cx,cy,fx,fy));
        fl[cx][cy]=-1;
        cnt--;
    }
    for(int i=0;i<n;i++)for(int j=0;j<m;j++){
        if(fl[i][j]==-1)continue;
        for(int ii=max(0,i-1);ii<=min(n-1,i+1);ii++)for(int jj=max(0,j-1);jj<=min(m-1,j+1);jj++){
            if(fl[ii][jj]==-1)fl[i][j]++;
        }
    }
}

int main(){
    srand(time(0));
    game_set gs=menu();
    game_init(gs,0,0);
    int n=gs.n,m=gs.m,cnt=gs.cnt;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(fl[i][j]==-1)cout<<"* ";
            else if(fl[i][j]==0)cout<<". ";
            else cout<<fl[i][j]<<" ";
        }
        cout<<"\n\n";
    } 
}

-1.0.2

/*
Compiler: C++14 +
*/

#include<iostream>
#include<windows.h>
#include<conio.h>
#include<ctime>
#include<cstdlib>
#include<cstring> 
using namespace std;
#define c++14

struct game_set{
    int n,m,cnt;
};

int fl[1010][1010];
int status[1010][1010];

bool judgeAdj(int x1,int y1,int x2,int y2){
    return max(abs(x1-x2),abs(y1-y2))<=1;
}

int limit(int mod){
    return RAND_MAX-RAND_MAX%mod;
}

bool judgeKdLt(char ch,char tgt){
    return ch==tgt||ch==tgt-32;
}

bool judgeKd(char ch,char tgt){
    return ch==tgt;
}

game_set menu(){
    cout<<"Minesweeper -1.0.2.\n";
    cout<<"[1] Easy   (9,9,10)\n";
    cout<<"[2] Medium (16,16,40)\n";
    cout<<"[3] Expert (16,30,99)\n";
    cout<<"[4] Custom\n";
    char ch=getch();
    while(1){
        if(judgeKd(ch,'1'))return {9,9,10};
        else if(judgeKd(ch,'2'))return {16,16,40};
        else if(judgeKd(ch,'3'))return {16,30,99};
        else if(judgeKd(ch,'4')){
            system("cls");
            game_set gs;
            cout<<"Row:";cin>>gs.n;
            cout<<"Column:";cin>>gs.m;
            cout<<"Mine count:";cin>>gs.cnt;
            while(gs.n>=100||gs.m>=100||gs.cnt>gs.n*gs.m-9){
                system("cls");
                cout<<"Too large!\n";
                cout<<"Row:";cin>>gs.n;
                cout<<"Column:";cin>>gs.m;
                cout<<"Mine count:";cin>>gs.cnt;
            }
            return gs;
        }else{
            system("cls");
            cout<<"Minesweeper -1.0.2.\n";
            cout<<"[1] Easy   (9,9,10)\n";
            cout<<"[2] Medium (16,16,40)\n";
            cout<<"[3] Expert (16,30,99)\n";
            cout<<"[4] Custom\n\n";
            cout<<"(Invaild operation)\n";
            ch=getch();
        }
    }
}

void game_init(game_set gs,int fx,int fy){
    int n=gs.n,m=gs.m,cnt=gs.cnt;
    system("cls");
    memset(fl,0,sizeof fl);
    memset(status,0,sizeof status);
    while(cnt--){
        int cx,cy;
        do{
            cx=rand(),cy=rand(); 
//          cout<<cx<<" "<<cy<<" "<<limit(n)<<" "<<limit(m)<<"\n";
        }while(!(cx<limit(n)&&cy<limit(m)&&!judgeAdj(cx%n,cy%m,fx,fy)));
        fl[cx%n][cy%m]=-1;
//      cout<<"[ok] "<<cnt<<"\n";
    }
    for(int i=0;i<n;i++)for(int j=0;j<m;j++){
        if(fl[i][j]==-1)continue;
        for(int ii=max(0,i-1);ii<=min(n-1,i+1);ii++)for(int jj=max(0,j-1);jj<=min(m-1,j+1);jj++){
            if(fl[ii][jj]==-1)fl[i][j]++;
        }
    }
}

int main(){
    srand(time(0));
    game_set gs=menu();
    game_init(gs,8,15);
    int n=gs.n,m=gs.m,cnt=gs.cnt;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(fl[i][j]==-1)cout<<"*  ";
            else if(fl[i][j]==0)cout<<".  ";
            else cout<<fl[i][j]<<"  ";
        }
        cout<<"\n\n";
    } 
}

-1.0.3

/*
Compiler: C++14 +
*/

#include<iostream>
#include<windows.h>
#include<conio.h>
#include<ctime>
#include<cstdlib>
#include<cstring> 
using namespace std;
#define c++14

struct game_set{
    int n,m,cnt;
};

int fl[1010][1010];
int status[1010][1010];

bool judgeAdj(int x1,int y1,int x2,int y2){
    return max(abs(x1-x2),abs(y1-y2))<=1;
}

int limit(int mod){
    return RAND_MAX-RAND_MAX%mod;
}

bool judgeKdLt(char ch,char tgt){
    return ch==tgt||ch==tgt-32;
}

bool judgeKd(char ch,char tgt){
    return ch==tgt;
}

game_set menu(){
    cout<<"Minesweeper -1.0.3.\n";
    cout<<"[1] Easy   (9,9,10)\n";
    cout<<"[2] Medium (16,16,40)\n";
    cout<<"[3] Expert (16,30,99)\n";
    cout<<"[4] Custom\n";
    char ch=getch();
    while(1){
        if(judgeKd(ch,'1'))return {9,9,10};
        else if(judgeKd(ch,'2'))return {16,16,40};
        else if(judgeKd(ch,'3'))return {16,30,99};
        else if(judgeKd(ch,'4')){
            system("cls");
            game_set gs;
            cout<<"Row:";cin>>gs.n;
            cout<<"Column:";cin>>gs.m;
            cout<<"Mine count:";cin>>gs.cnt;
            while(gs.n>=100||gs.m>=100||gs.cnt>gs.n*gs.m-9){
                system("cls");
                cout<<"Too large!\n";
                cout<<"Row:";cin>>gs.n;
                cout<<"Column:";cin>>gs.m;
                cout<<"Mine count:";cin>>gs.cnt;
            }
            return gs;
        }else{
            system("cls");
            cout<<"Minesweeper -1.0.3.\n";
            cout<<"[1] Easy   (9,9,10)\n";
            cout<<"[2] Medium (16,16,40)\n";
            cout<<"[3] Expert (16,30,99)\n";
            cout<<"[4] Custom\n\n";
            cout<<"(Invaild operation)\n";
            ch=getch();
        }
    }
}

void game_init(game_set gs,int fx,int fy){
    int n=gs.n,m=gs.m,cnt=gs.cnt;
    system("cls");
    memset(fl,0,sizeof fl);
    memset(status,0,sizeof status);
    while(cnt--){
        int cx,cy;
        do{
            cx=rand(),cy=rand(); 
//          cout<<cx<<" "<<cy<<" "<<limit(n)<<" "<<limit(m)<<"\n";
        }while(!(cx<limit(n)&&cy<limit(m)&&!judgeAdj(cx%n,cy%m,fx,fy)));
        fl[cx%n][cy%m]=-1;
//      cout<<"[ok] "<<cnt<<"\n";
    }
    for(int i=0;i<n;i++)for(int j=0;j<m;j++){
        if(fl[i][j]==-1)continue;
        for(int ii=max(0,i-1);ii<=min(n-1,i+1);ii++)for(int jj=max(0,j-1);jj<=min(m-1,j+1);jj++){
            if(fl[ii][jj]==-1)fl[i][j]++;
        }
    }
}

void display(game_set gs,int x,int y){
    system("cls");
    int n=gs.n,m=gs.m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
//          cout<<i<<" "<<j<<" "<<fl[i][j]<<" "<<status[i][j]<<"\n"; 
            if(i==x&&j==y){
                if(status[i][j]==0)cout<<"#< ";
                else if(status[i][j]==1){
                    if(fl[i][j]==-1)cout<<"*< ";
                    else if(fl[i][j]==0)cout<<".< ";
                    else cout<<fl[i][j]<<"< ";
                }
                else cout<<"X< ";
            }else{
                if(status[i][j]==0)cout<<"#  ";
                else if(status[i][j]==1){
                    if(fl[i][j]==-1)cout<<"*  ";
                    else if(fl[i][j]==0)cout<<".  ";
                    else cout<<fl[i][j]<<"  ";
                }
                else cout<<"X  ";
            }
        }
        cout<<"\n\n";
    }
}

int d[8][2]={1,0,0,1,0,-1,-1,0,1,1,1,-1,-1,1,-1,-1};

void open_(int x,int y,int n,int m){
    if(fl[x][y]==-1){
        cout<<"End!";
        exit(0);
    }
    status[x][y]=1;
    if(fl[x][y])return ;
    for(int i=0;i<8;i++){
        int rx=d[i][0]+x,ry=d[i][1]+y;
        if(rx<0||rx>=n||ry<0||ry>=m)continue;
        if(status[rx][ry]==1||status[rx][ry]==-1)continue; 
//      cout<<rx<<" "<<ry<<"\n";
        open_(rx,ry,n,m);
    }
}

void autoopen(int x,int y,int n,int m){
    int cnt=0;
    if(status[x][y]!=1)return ;
    if(fl[x][y]==-1){
        cout<<"End!";
        exit(0);
    }
    for(int i=0;i<8;i++){
        cnt+=fl[x+d[i][0]][y+d[i][1]]==-1;
    }
    if(fl[x][y]!=cnt)return ;
    for(int i=0;i<8;i++){
        int rx=d[i][0]+x,ry=d[i][1]+y;
        if(rx<0||rx>=n||ry<0||ry>=m)continue;
        if(status[rx][ry]==1||status[rx][ry]==-1)continue; 
//      cout<<rx<<" "<<ry<<"\n";
        open_(rx,ry,n,m);
    }
}

bool check(int n,int m){
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(fl[i][j]==-1)continue;
            if(status[i][j]!=1)return 0;
        }
    }
    return 1;
}

void game(game_set gs){
    memset(status,0,sizeof status);
    int x=0,y=0;
    int n=gs.n,m=gs.m;
    while(1){
        char ch=getch();
        if(ch=='W'||ch=='w'){
            if(x>0)x--;
        }else if(ch=='A'||ch=='a'){
            if(y>0)y--; 
        }else if(ch=='S'||ch=='s'){
            if(x<n-1)x++;
        }else if(ch=='D'||ch=='d'){
            if(y<m-1)y++;
        }else if(ch=='J'||ch=='j'){
            break;
        }
        display(gs,x,y);
    }
    game_init(gs,x,y);
    open_(x,y,n,m);
    display(gs,x,y);
    if(check(n,m))cout<<"Win!",exit(0);
    while(1){
        char ch=getch();
        if(ch=='W'||ch=='w'){
            if(x>0)x--;
        }else if(ch=='A'||ch=='a'){
            if(y>0)y--; 
        }else if(ch=='S'||ch=='s'){
            if(x<n-1)x++;
        }else if(ch=='D'||ch=='d'){
            if(y<m-1)y++;
        }else if(ch=='J'||ch=='j'){
            open_(x,y,n,m);
        }else if(ch=='K'||ch=='k'){
            if(status[x][y]==-1)status[x][y]=0;
            else if(status[x][y]==0)status[x][y]=-1;
        }else if(ch=='L'||ch=='l'){
            autoopen(x,y,n,m);
        }
        display(gs,x,y);
        if(check(n,m))cout<<"Win!",exit(0);
    }
}

int main(){
    srand(time(0));
    game_set gs=menu();
//  game_init(gs,0,0);
    game(gs);
    int n=gs.n,m=gs.m,cnt=gs.cnt;

//  for(int i=0;i<n;i++){
//      for(int j=0;j<m;j++){
//          if(fl[i][j]==-1)cout<<"*  ";
//          else if(fl[i][j]==0)cout<<".  ";
//          else cout<<fl[i][j]<<"  ";
//      }
//      cout<<"\n\n";
//  } 
}

-1.0.4

基本可以玩了。

/*
Compiler: C++14 +
*/

#include<iostream>
#include<windows.h>
#include<conio.h>
#include<ctime>
#include<cstdlib>
#include<cstring> 
using namespace std;

struct game_set{
    int n,m,cnt;
};

bool judgeAdj(int x1,int y1,int x2,int y2);
int limit(int mod);
game_set menu();
void game_init(game_set gs,int fx,int fy);
void display(game_set gs,int x,int y);
void open_(int x,int y,int n,int m);
void autoopen(int x,int y,int n,int m);
bool check(int n,int m);
void game(game_set gs);
void game_end(int sta,int x,int y,int n,int m);

int fl[1010][1010];
int status[1010][1010];

int mark;

int main(){
    srand(time(0));
    while(1){
        game_set gs=menu();
        game(gs);
    }
}

bool judgeAdj(int x1,int y1,int x2,int y2){
    return max(abs(x1-x2),abs(y1-y2))<=1;
}

int limit(int mod){
    return RAND_MAX-RAND_MAX%mod;
}

game_set menu(){
    mark=0;
    system("cls");
    cout<<"Minesweeper -1.0.4.\n";
    cout<<"[1] Easy   (9,9,10)\n";
    cout<<"[2] Medium (16,16,40)\n";
    cout<<"[3] Expert (16,30,99)\n";
    cout<<"[4] Custom\n";
    char ch=getch();
    while(1){
        if(ch=='1')return {9,9,10};
        else if(ch=='2')return {16,16,40};
        else if(ch=='3')return {16,30,99};
        else if(ch=='4'){
            system("cls");
            game_set gs;
            cout<<"Row:";cin>>gs.n;
            cout<<"Column:";cin>>gs.m;
            cout<<"Mine count:";cin>>gs.cnt;
            while(gs.n>=500||gs.m>=500||gs.cnt>gs.n*gs.m-9){
                system("cls");
                cout<<"Error!\n";
                cout<<"Row:";cin>>gs.n;
                cout<<"Column:";cin>>gs.m;
                cout<<"Mine count:";cin>>gs.cnt;
            }
            return gs;
        }
    }
}

void game_init(game_set gs,int fx,int fy){
    int n=gs.n,m=gs.m,cnt=gs.cnt;
    system("cls");
    memset(fl,0,sizeof fl);
    memset(status,0,sizeof status);
    while(cnt--){
        int cx,cy;
        do{
            cx=rand(),cy=rand(); 
//          cout<<cx<<" "<<cy<<" "<<limit(n)<<" "<<limit(m)<<"\n";
        }while(!(cx<limit(n)&&cy<limit(m)&&!judgeAdj(cx%n,cy%m,fx,fy)));
        fl[cx%n][cy%m]=-1;
//      cout<<"[ok] "<<cnt<<"\n";
    }
    for(int i=0;i<n;i++)for(int j=0;j<m;j++){
        if(fl[i][j]==-1)continue;
        for(int ii=max(0,i-1);ii<=min(n-1,i+1);ii++)for(int jj=max(0,j-1);jj<=min(m-1,j+1);jj++){
            if(fl[ii][jj]==-1)fl[i][j]++;
        }
    }
}

void display(game_set gs,int x,int y){
    system("cls");
    int n=gs.n,m=gs.m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
//          cout<<i<<" "<<j<<" "<<fl[i][j]<<" "<<status[i][j]<<"\n"; 
            if(i==x&&j==y){
                if(status[i][j]==0)printf("#< ");
                else if(status[i][j]==1){
                    if(fl[i][j]==-1)printf("*< ");
                    else if(fl[i][j]==0)printf(".< ");
                    else printf("%d< ",fl[i][j]);
                }
                else printf("X< ");
            }else{
                if(status[i][j]==0)printf("#  ");
                else if(status[i][j]==1){
                    if(fl[i][j]==-1)printf("*  ");
                    else if(fl[i][j]==0)printf(".  ");
                    else printf("%d  ",fl[i][j]);
                }
                else printf("X  ");
            }
        }
        cout<<"\n\n";
    }
}

int d[8][2]={1,0,0,1,0,-1,-1,0,1,1,1,-1,-1,1,-1,-1};

void open_(int x,int y,int n,int m){
    status[x][y]=1;
    if(fl[x][y]==-1){
        mark=1;
        return ;
    }
    if(fl[x][y])return ;
    for(int i=0;i<8;i++){
        int rx=d[i][0]+x,ry=d[i][1]+y;
        if(rx<0||rx>=n||ry<0||ry>=m)continue;
        if(status[rx][ry]==1||status[rx][ry]==-1)continue; 
//      cout<<rx<<" "<<ry<<"\n";
        open_(rx,ry,n,m);
    }
}

void autoopen(int x,int y,int n,int m){
    int cnt=0;
    if(status[x][y]!=1)return ;
    if(fl[x][y]==-1){
        mark=1;
        return ;
    }
    for(int i=0;i<8;i++){
        cnt+=status[x+d[i][0]][y+d[i][1]]==-1;
    }
    if(fl[x][y]!=cnt)return ;
    for(int i=0;i<8;i++){
        int rx=d[i][0]+x,ry=d[i][1]+y;
        if(rx<0||rx>=n||ry<0||ry>=m)continue;
        if(status[rx][ry]==1||status[rx][ry]==-1)continue; 
//      cout<<rx<<" "<<ry<<"\n";
        open_(rx,ry,n,m);
    }
}

bool check(int n,int m){
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(fl[i][j]==-1)continue;
            if(status[i][j]!=1)return 0;
        }
    }
    return 1;
}

void game(game_set gs){
    memset(status,0,sizeof status);
    int x=0,y=0;
    int n=gs.n,m=gs.m;
    while(1){
        char ch=getch();
        if(ch=='W'||ch=='w'){
            if(x>0)x--;
        }else if(ch=='A'||ch=='a'){
            if(y>0)y--; 
        }else if(ch=='S'||ch=='s'){
            if(x<n-1)x++;
        }else if(ch=='D'||ch=='d'){
            if(y<m-1)y++;
        }else if(ch=='J'||ch=='j'){
            break;
        }
        display(gs,x,y);
    }
    game_init(gs,x,y);
    open_(x,y,n,m);
    display(gs,x,y);
    if(check(n,m)){game_end(1,x,y,n,m);return ;}
    while(1){
        char ch=getch();
        if(ch=='W'||ch=='w'){
            if(x>0)x--;
        }else if(ch=='A'||ch=='a'){
            if(y>0)y--; 
        }else if(ch=='S'||ch=='s'){
            if(x<n-1)x++;
        }else if(ch=='D'||ch=='d'){
            if(y<m-1)y++;
        }else if(ch=='J'||ch=='j'){
            open_(x,y,n,m);
        }else if(ch=='K'||ch=='k'){
            if(status[x][y]==-1)status[x][y]=0;
            else if(status[x][y]==0)status[x][y]=-1;
        }else if(ch=='L'||ch=='l'){
            autoopen(x,y,n,m);
        }
        if(mark){game_end(0,x,y,n,m);return ;}
        display(gs,x,y);
        if(check(n,m)){game_end(1,x,y,n,m);return ;}
    }
}

void game_end(int sta,int x,int y,int n,int m){
    system("cls");
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++)status[i][j]=1;
    }
    display({n,m,-1},x,y);
    if(sta==0)cout<<"Game Over!\n";
    else cout<<"Win!\n";
    cout<<"[M] Back to menu\n";
    cout<<"[-] Exit\n";
    while(1){
        char ch=getch();
        if(ch=='M'||ch=='m')return ;
        else if(ch=='-')exit(0);
    }
}