gpt4 book ai didi

java - FloodFill - 扫雷,需要解释

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:13:00 24 4
gpt4 key购买 nike

我正在尝试用 Java 制作类似扫雷的游戏,并且我已经完成了其中的大部分工作。我需要帮助的是 FloodFill - http://en.wikipedia.org/wiki/Flood_fill .

谁能解释一下它是如何工作的?我在网上看过,但我不太明白其中的解释,所以我认为在这里提问会更容易。

在我的扫雷器中我有:

JButton[] btn = new JButton[100]//buttons being clicked and displaying the values/bombs
int[] mines = new int[100];//int array holding the values for each button.

网格是一个 10x10 的网格,假设您点击的按钮是 btn[14],

btn[4]  // north of btn[14](14-10)
btn[24] // south of btn[14](14+10)
btn[13] // west of btn[14](14-1)
btn[15] // east of btn[14](14+1)

回到问题,有人能给我解释一下吗?

编辑:我将我的代码更改为 2D,所以现在不是上面的代码

btn[1][4]//row one, column 4

单击按钮时,我希望它检查一个名为 mines[][] 的变量,该变量具有值,如果该值等于 0(在最初单击的周围),它会更改 BG

btn[x][y].setBackground(Color.GRAY);

最佳答案

它是一种递归算法。您从 2D 网格 [x,y] 中的某个起始位置开始,然后查看所有方向并尽可能填充它们。如果 (x,y) 无法填充,则返回。

void floodFill( int x, int y ) {
if ( btn( x, y ) isFillable ) {
fillBtn(x,y);
floodFill( x+1, y );
floodFill( x-1, y );
floodFill( x, y-1 );
floodFill( x, y+1 );
} else {
return;
}
}

(省略网格边界检查)

关于java - FloodFill - 扫雷,需要解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14076090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com