递归思想—扫雷的拓展

void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col)

{

    int static x = 0;//修改静态局部变量

    int static y = 0;

    int static win = 0;

    while (win<row*col-EASY_COUNT)

    {

        printf("请输入排查的坐标\n");

        scanf("%d%d",&x,&y);

        if(x>=1 && x<=row && y>=1 && y<=col)

        {

            //坐标合法

            //1.踩雷

            if(mine[x][y] == '1')

            {

                printf("很遗憾,你被炸死了\n");

                DisplayBoard(mine,row,col);

                break;

            }

            //没踩到雷

            else

            {

                cheak(mine,show,ROW,COL,x,y,win);

            }

            

        }

        else

        {

            printf("坐标非法,请重新输入");

        }

    } 

    if(win == row*col - EASY_COUNT)

    {

        printf("恭喜你赢了\n");

        DisplayBoard(mine,row,col);

    }

}

 void cheak(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col,int x,int y,int win)     

 {

         //计算x,y坐标周围有几个雷

        int count = get_mine_count(mine,show,x,y);

        if (count = 0)

        {

            show[x][y] = ' ';

            cheak(mine,show,row,col,x-1,y-1,win);

            cheak(mine, show, row,col,x, y-1, win);

            cheak(mine, show,row,col,x+1, y-1, win);

            cheak( mine, show,row,col, x-1, y, win);

            cheak( mine, show, row,col, x+1,y, win);

            cheak( mine,show, row,col,x-1, y+1, win);

            cheak( mine,show,row,col,x, y+1,win);

            cheak( mine,show, row,col,x+1, y+1, win);

            win++;

        }

        else

        {

            int count = get_mine_count(mine,show,x,y);

            show[x][y] = count + '0';

        }   

 }      

在做完FineMine后

增加了cheak函数

针对一个周围没有雷的格子拓展的函数

可以一直延伸到有扫雷信号的地方停止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值