首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在扫雷舰上发现一个没有地雷的区域

在扫雷舰上发现一个没有地雷的区域
EN

Stack Overflow用户
提问于 2016-11-20 05:32:51
回答 1查看 521关注 0票数 1

我在这个页面是新的,它希望得到一些帮助,基本上我在Java上做一个扫雷游戏,但是它有一个功能问题:发现没有地雷的区域,没有像在窗口上的游戏中的数字,当你点击一个地方,所有的细胞都出现了。我试着做递归,但我做不到,有帮助吗?

不好意思,原来的代码是西班牙语的,但我试着做了一个伪码: Matriz =多维数组(扫雷器) min和max返回索引min和max来迭代(8个排序单元格)

代码语言:javascript
复制
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);
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-20 06:37:04

这里的代码不多,但我觉得你倒过来了。

对不起,我不是说Java的人,所以我猜其中的一些语法。注意,这可能会超出范围--就我个人而言,我会在地图周围添加一层空单元格,这样我就不用担心边界检查了。

代码语言:javascript
复制
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);
}

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40701036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档