gpt4 book ai didi

Java递归问题: Minesweeper

转载 作者:行者123 更新时间:2023-12-01 13:38:39 24 4
gpt4 key购买 nike

我几天前刚刚学习 Java,并开始编写扫雷游戏。问题是,当我尝试级联周围的 block 并显示 block (空白或数字取决于相邻炸弹的数量)时,我的递归失败并给出堆栈溢出错误。我的代码如下:

public void revealCell(int row, int col) 
{
if(mAnswerBoard.get (row, col).equals ("1")||mAnswerBoard.get (row, col).equals("2")||
mAnswerBoard.get (row, col).equals("3")||mAnswerBoard.get (row, col).equals("4")||
mAnswerBoard.get (row, col).equals("5"))
{
mMinesweeperBoard.set (row, col, mAnswerBoard.get (row, col));
return;
}

else if(mAnswerBoard.get (row, col).equals("0"))
{
mMinesweeperBoard.set (row, col, " ");
for(int i = row - 1; i <= row + 1; i++)
{
if (i == -1)
{
i = 0;
}
for(int j = col - 1; j <= col + 1; j++)
{
if (j == -1)
{
j = 0;
}
if (mAnswerBoard.get (i, j).equals ("0") == false)
{
mMinesweeperBoard.set (i, j, mAnswerBoard.get (i, j));
}
else if (mAnswerBoard.get (i, j).equals (("0")))
{
if (mMinesweeperBoard.get (j, i).equals ("."))
{
mMinesweeperBoard.set(i, j, " ");
revealCell(i, j);
}
}
}
}
}
}

我已经盯着这个看了好几个小时了,我真的不明白为什么它不停止循环。我的初始游戏板显示“。”在未显示的位置,如果为 0,则棋盘将保留空白。我尝试检查答案键是否在该位置包含 0,如果是,以及实际的板是否仍然包含“。”在现场,我可以设置一个空白。由于某种原因,revealCell 被一遍又一遍地调用,我真的无法弄清楚。我做错了什么吗?

旁注:如果 i 和 j 为 -1,我必须将它们设置为 0,因为我的代码允许用户输入 0,0 作为有效坐标。

感谢您的帮助,如果答案就在我面前,我很抱歉......

最佳答案

             if (mMinesweeperBoard.get (j, i).equals ("."))

您在此处交换了 ij,因此您测试了错误的单元格。将它们切换回来,看看是否能解决问题。

关于Java递归问题: Minesweeper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21037015/

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