在扫雷艇上发现没有地雷的地区

Discovering a region with no mines on minesweeper

我是这个页面的新手,希望能得到一些帮助,基本上我在 Java 上做一个扫雷游戏但是它有一个功能有问题:发现没有地雷也没有数字的区域就像 windows 上的游戏一样,当你点击一个地方时,所有的单元格都会出现。我试过 make recursive 但我不能,有人帮忙吗?

对不起代码,原文是西班牙语,但我试着做了一个伪代码: Matriz = 多维数组(扫雷器) 最小值和最大值 returns 要迭代的索引最小值和最大值(8 个模糊单元格)

private void discoverWitheCell(int x, int y) {
    if(matriz[x][y].getdiscovered() == false){
        matriz[x][y].setDiscovered(true);
    }
    else{
        if(matriz[x][y].getNumberOfMinesArround() == 0){
            for(int i=min(x);i<max(x);i++)
                for(int j=min(y);j<max(y);j++)
                    discoverWhiteCell(i,j);
        }
    }
}

这里没有很多代码,但我觉得你在倒退。

抱歉,我不是 Java 演讲者,所以我在猜测一些语法。请注意,这可能会越界——就个人而言,我会在我的地图周围添加一层空单元格,这样我就永远不需要担心边界检查。

private void ClickSquare(int x, int y)
{
   // Did the user click an already exposed square?  If so, ignore
   if (matriz[x][y].getDiscovered()) return;
   matriz[x][y].SetDiscovered(true);
   if (matriz[x][y].getNumberOfMinesAround != 0) return;
   // If empty, click all the neighbors
   for (int xloop = x - 1; xloop <= x + 1; xloop++)
       for (int yloop = y - 1; yloop <= y + 1; yloop++)
           ClickSquare(xloop, yloop);
}

我相信您发现的测试搞砸了,您的版本似乎能够进入无限(直到堆栈溢出)递归,就好像邻居也为零一样它将返回到原始单元格。我的版本通过仅处理尚未处理的单元格来停止此递归。