扫雷升级Plus版

简介: 扫雷升级Plus版

接上一篇博客,我们还可以优化一下我们的扫雷小游戏


实现展开一片


首先让我们考虑于一下,什么时候我们要展开一片。


  1. 排查的位置没有被排查过
  2. 排查的位置不是雷
  3. 排查的位置周围8个位置都没有雷的时候


因此,我们此次升级就是在SeekMine函数中修改


当满足以上条件的时候,我们将排查的并且周围没有雷的位置的show数组元素置为空格,这时该位置周围的8个位置也会被我们排查一次,所以可以使用递归调用来实现,对于展开函数的实现,最重要的就是递归条件,否则容易出现死递归,造成堆栈溢出。


只要处理好条件,用递归的方式很轻松就可以写出展开函数,

void UnfoldBoard(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y)
{
  int i = 0;
  int j = 0;
  int count = 0;
  if (x > 0 && x <= ROW && y > 0 && y <= COL)//判断坐标是否合法
  {
    for (i = -1; i <= 1; i++)
    {
      for (j = -1; j <= 1; j++)
      {
        count = get_mine_count(mine, x + i, y + j);
        if (count == 0)//判断该位置周围有没有雷
        {
          if (show[x + i][y + j] == '*' || show[x + i][y + j] == '#')
          {
            show[x + i][y + j] = ' ';
            UnfoldBoard(mine, show, x + i, y + j);
          }
        }
      }
    }
  }
}


最后,老规矩,上代码:


https://gitee.com/gascsd/litter-game/tree/master/%E6%89%AB%E9%9B%B7%E5%8D%87%E7%BA%A7plus%E7%89%88

相关文章
|
7月前
|
存储
扫雷游戏讲解(第一版本)
扫雷游戏讲解(第一版本)
60 0
|
7月前
|
C语言
扫雷游戏
扫雷游戏
53 0
|
5月前
|
存储
|
C语言
扫雷游戏的实现(上)
扫雷游戏的实现
64 0
|
7月前
扫雷游戏(优化版)
扫雷游戏(优化版)
62 0
扫雷游戏(优化版)
|
7月前
leetcode-529:扫雷游戏
leetcode-529:扫雷游戏
56 0
扫雷游戏的实现(详解)
扫雷游戏的实现(详解)
109 0
|
C语言
扫雷游戏的实现(下)
扫雷游戏的实现(下)
60 0