well,c语言简易扫雷

来源:互联网 发布:王士营养配餐软件 编辑:程序博客网 时间:2024/05/21 15:22

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,may you success!");
    return 0;
}


原创粉丝点击