自编《扫雷》。
很刺激!
看代码:
#include<iostream>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
#include<cmath>
#define maxn 11
using namespace std;
char a[maxn][maxn];
int b[maxn][maxn],m,n,k,c[maxn][maxn],num;
bool life=true;
void number(){
	int i,j;
	k=0;
	for(i=1;i<=m;i++)
	  for(j=1;j<=n;j++)
	  if(b[i][j]==c[i][j])
	  k++;
}
void number1(){
	int i,j;
	num=0;
	for(i=1;i<=m;i++)
	  for(j=1;j<=n;j++)
	  if(a[i][j]=='*')
	  num++;
}
void around(int x,int y){
	int t=0;
	if(a[x-1][y]=='*') t++;
	if(a[x+1][y]=='*') t++;
	if(a[x][y-1]=='*') t++;
	if(a[x][y+1]=='*') t++;
	if(a[x-1][y-1]=='*') t++;
	if(a[x-1][y+1]=='*') t++;
	if(a[x+1][y-1]=='*') t++;
	if(a[x+1][y+1]=='*') t++;
	b[x][y]=t;
	c[x][y]=t;
}
void color(int a){
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void doing(int x,int y){
	system("cls");
	int i,j;
	if(x<=m&&y<=n&&b[x][y]!=c[x][y]){
		if(a[x][y]=='*'){
			life=false;
			for(i=1;i<=m;i++){
				for(j=1;j<=n;j++){
					if(a[i][j]=='*'){
						color(12);
						cout<<'*';
					}
					else{
						color(15);
						cout<<'#';
					}
				}
				cout<<endl;
			}
			color(11);
			cout<<"你over了!";
			color(15);
		}
		else{
			around(x,y);
			for(i=1;i<=m;i++){
				for(j=1;j<=n;j++){
					if(((i==x-1&&j==y)||(i==x+1&&j==y)||(i==x&&j==y-1)||(i==x&&j==y+1))&&a[i][j]!='*'){
						around(i,j);
						color(10);
						cout<<b[i][j];
					}
					else if(b[i][j]==c[i][j]){
						color(10);
						cout<<b[i][j];
					}
					else{
						color(15);
						cout<<'#';
					}
				}
				cout<<endl;
			}
		}
	}
	else{
		for(i=1;i<=m;i++){
			for(j=1;j<=n;j++){
				if(((i==x-1&&j==y)||(i==x+1&&j==y)||(i==x&&j==y-1)||(i==x&&j==y+1))&&a[i][j]!='*'){
					around(i,j);
					color(10);
					cout<<b[i][j];
				}
				else if(b[i][j]==c[i][j]){
					color(10);
					cout<<b[i][j];
				}
				else{
					color(15);
					cout<<'#';
				}
			}
			cout<<endl;
		}
	}
}
int main(){
	int x,y,i,j,x1,y1;
	for(i=1;i<=maxn;i++)
	  for(j=1;j<=maxn;j++)
	  c[i][j]=1;
	cout<<"请输入雷阵行数和列数:";
	cin>>m>>n;
	if(m>=maxn) m=maxn-1;
	if(n>=maxn) n=maxn-1;
	srand(time(0));
	for(i=1;i<=m*n/3;i++){
		x1=rand()%m+1;
		y1=rand()%n+1;
		a[x1][y1]='*'; 
	}
	for(i=1;i<=m;i++){
		for(j=1;j<=n;j++){
			color(15);
			cout<<'#';
		}
		cout<<endl;
	}
	while(life==true){
		number();
		number1();
		if(k==m*n-num){
			color(11);
			cout<<"你赢了!";
			color(15);
			return 0;	
		}
		color(15);
		cout<<"提示:翻开的格子的上下左右四个格子中没有地雷的格子会翻开。"<<endl;
		cout<<"请输入你要翻开的格子的行列位置:";
		cin>>x>>y;
		doing(x,y);
	}
	return 0;
}