voidrank(char a[high][li]){int x, y;int i =0;while(i < leve){
x =rand()%9+1;
y =rand()%9+1;if(a[x][y]=='1')continue;else
a[x][y]='1';
i++;}}
5、玩家排雷函数
voidplayer(char a[high][li],char b[high][li]){while(number(show,'*')> leve){int x, y, u, l, num;printf("输入坐标\n");scanf("%d %d",&x,&y);if(a[x][y]=='1'){printf("被雷炸了\n");print(mine);break;}elseif(b[x][y]!='*'){printf("排查过了,请重新坐标\n");continue;}else{
num =0;for(u = x -1; u <= x +1; u++)for(l = y -1; l <= y +1; l++)if(a[u][l]=='1')
num++;if(num==0)bloom(mine, show,x,y);
b[x][y]= num+48;}print(show);}if(number(show,'*')== leve)printf("排雷完\n");}
1、查找还没排查区域的数量
intnumber(char a[high][li],char b){int x, y, num;
num =0;for(x =0; x < high; x++)for(y =0; y < li; y++)if(a[x][y]== b)
num ++;return num;}
2、如果排查到了一个周围都没有雷的区域,就会扩散直到出现周围有雷的区域或者这个区域达到了边界函数
voidbloom(char a[high][li],char b[high][li],int x,int y){int u, g, j, l, num;
a[x][y]='2';if(x <=0|| y <=0|| x >= highs -1|| y >= lis -1|| b[x][y]!='*')return0;for(u=x-1;u<=x+1;u++)for(g = y -1; g <= y +1; g++){if(a[u][g]=='2')continue;
a[u][g]='2';
num =0;for(j = u -1; j <= u +1; j++)for(l = g -1; l <= g +1; l++)if(a[j][l]=='1')
num++;if(num ==0)bloom(a,b,u,g);
b[u][g]= num +48;}}