emmmmm,只能进行扫雷,不能标记,没有开版这一说(点一个就消失一个,不会出现消失一片),扫雷由键盘控制,异常麻烦。。。
以上,大概就是全部了。(注意坐标从0,0开始)
代码如下
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
char arr[1000][1000];
int brr[10001][1001];
int bon,x,y,i,j,count=0;
void mmap()
{
int dis[8][2]={-1,-1, -1,0, -1,1, 0,-1, 0,1, 1,-1, 1,0, 1,1};
for(i=0;i<bon;i++)
{
int temx,temy;
temx=rand()%x,temy=rand()%y;
if(arr[temx][temy]){i--;continue;}
arr[temx][temy]='*';
}
for(i=1;i<=x;i++)
{
for(j=1;j<=y;j++)
if(arr[i-1][j-1]=='*')
{
for(int k=0;k<8;k++)
brr[i+dis[k][0]][j+dis[k][1]]++;
}
}
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
printf(".");
printf("\n");
}
}
void play()
{
int tx,ty;
printf("the x? the y?\n");
scanf("%d%d",&tx,&ty);
system("clear");
if(arr[tx][ty]!='*')
{
if(arr[tx][ty]!='@')
count++;
arr[tx][ty]='@';
}
else{printf("you lose!\n");return;}
if(count==x*y-bon)
{
printf("you win!\n");
return;
}
for(i=1;i<=x;i++)
{
for(j=1;j<=y;j++)
{
if(arr[i-1][j-1]=='@')
printf("%d",brr[i][j]);
else printf(".");
}
printf("\n");
}
play();
}
int main()
{
while(1)
{
memset(arr,0,sizeof(arr));
memset(brr,0,sizeof(brr));
srand(time(0));
printf("please input the hight,width and boom\n");
scanf("%d%d%d",&x,&y,&bon);
mmap();
play();
printf("continue?(1/0)\n");
scanf("%d",&bon);
if(!bon)break;
}
printf("Thank you for play my simple game=.=");
return 0;
}