代码展示
#includeusing namespace std; bool f[10][10],vis[10][10]; char c; int nx[10][10],bo,a; void re(int x,int y){ nx[x-1][y-1]++; nx[x-1][y+1]++; nx[x-1][y]++; nx[x][y-1]++; nx[x][y+1]++; nx[x+1][y-1]++; nx[x+1][y]++; nx[x+1][y+1]++; } void clear(){ memset(f,0,sizeof(f)); memset(vis,0,sizeof(vis)); memset(nx,0,sizeof(nx)); } void loy(){ bo=0; for(int i=1;i<=a;i++){ for(int j=1;j<=a;j++){ int k=rand()%2; f[i][j]=k; if(k==1) re(i,j),bo++; } } bo=a*a-bo; if(bo =(a-2)*a&&a>4) loy(); } void write(){ printf("当前还剩余数目:%dn",bo); printf(" "); for(int i=1;i<=a;i++) printf("%d ",i); printf("n"); for(int i=1;i<=a;i++){ printf("%d",i); for(int j=1;j<=a;j++){ if(vis[i][j]) printf("%d ",nx[i][j]); else printf("%c ",char(1)); } printf("n"); } printf("n"); } void write1(){ for(int i=1;i<=a;i++){ for(int j=1;j<=a;j++){ printf("%d ",f[i][j]); } printf("n"); } printf("n"); } void lose(){ system("cls"); printf("nnttYou lose"); _sleep(3*1000); return; } void win(){ system("cls"); printf("nnttYou win!"); _sleep(3*1000); return; } void play(){ loy(); while(1){ system("cls"); write(); write1(); //<-作弊神器 int x,y; cin>>x>>y; if(vis[x][y]){ printf("该方块已被点击,请换一个试试。"); continue; } if(f[x][y]){ lose(); return; } vis[x][y]=1; bo--; if(!bo){ win(); return; } } } int main(){ printf("请输入矩阵的边长(正方形)。"); cin>>a; while(a>9){ printf("请输入一个比十小的数。"); cin>>a; } play(); system("cls"); printf("如果还想继续,请输入y。"); cin>>c; while(c=='y'){ clear(); printf("请输入矩阵的边长(正方形)。"); cin>>a; while(a>9){ printf("请输入一个比十小的数。"); cin>>a; } play(); cin>>c; } return 0; }



