C语言扫雷游戏for Mac

来源:互联网 发布:图片识别 python 编辑:程序博客网 时间:2024/05/20 01:07
  • 操作方法
    • 将代码复制到X-Code中编译成功后将可执行文件拖到桌面打开即可玩扫雷游戏。
  • 提示
    • define N 4 的功能是生成4*4列的雷区
  • 代码如下
#include <stdio.h>#include<stdlib.h>#include<time.h>#define N 4int a[N][N],b[N][N];void printfun(){    int i,j;    for(i=0;i<N;i++)    {        for(j=0;j<N;j++)        {            if(b[i][j])                printf("%2d ",a[i][j]);            else printf(" * ");        }        printf("\n");    }//    printf("\n");}void printA(){    int i,j;    for(i=0;i<N;i++)    {        for(j=0;j<N;j++)        {            printf("%2d ",a[i][j]);        }        printf("\n");    }}int fun(int i,int j){    if(i<0||i==N||j<0||j==N)        return 0;    if(a[i][j]==-1)        return 1;    return 0;}int main(){    int i,j,coordinate,mine,sum,flag;loop:    mine=0;    sum=N*N-1;    srand((unsigned)time(0));    for(i=0;i<N;i++)    {        for(j=0;j<N;j++)        {            if(rand()%5==0)            {                a[i][j]=-1;                mine++;            }            else a[i][j]=0;            b[i][j]=0;        }    }    if(mine==0)    {        a[rand()%N][rand()%N]=-1;        mine++;    }    for(i=0;i<N;i++)    {                for(j=0;j<N;j++)        {            if(a[i][j]==-1)            {                continue;            }            a[i][j]+=fun(i-1,j-1);            a[i][j]+=fun(i-1,j);            a[i][j]+=fun(i-1,j+1);            a[i][j]+=fun(i,j+1);            a[i][j]+=fun(i+1,j+1);            a[i][j]+=fun(i+1,j);            a[i][j]+=fun(i+1,j-1);            a[i][j]+=fun(i,j-1);        }    }    do    {        srand((unsigned)time(0));        i=rand()%N;j=rand()%N;    }while(a[i][j]==-1);    b[i][j]=1;   do    {        flag=0;        do        {            system("clear");            printf(" 地雷个数:%d\n",mine);            printfun();            if(flag)                printf("\n输入有误,重新输入!\n");            printf("请输入一个两位整数排雷(如12):");            scanf("%d",&coordinate);            getchar();            flag=1;        }while(coordinate<11||coordinate>N*10+N);        i=coordinate/10-1;        j=coordinate%10-1;            b[i][j]=1;            sum--;    }while(a[i][j]!=-1&&sum!=mine);    printA();    if(a[i][j]==-1)        printf("\n引爆地雷!-1代表地雷!\n");    else        printf("\n扫雷成功!\n");    getchar();    goto loop;    return 0;}
0 0