Java编程——用于扫雷游戏的嵌套for循环

标签 java loops for-loop minesweeper

目前正在制作一个扫雷游戏并坚持能够循环遍历周围的 8 个单元格以找到周围炸弹的数量。我有一个我认为可以正常工作的辅助方法,用于检查单元格(由 numberOfAdjacentBombs 传递)是否包含炸弹。我如何着手创建一个将循环遍历每个周围单元格的嵌套 for 循环?例如 (row-1, col-1), (row-1, col), (row-1, col+1).

感谢任何帮助或提示,谢谢! :-)

 private int numberOfAdjacentBombs(int row, int col){
 int count = 0;
 //nested for loop
 count += getIfBomb(int, int)
}

辅助方法检查单元格是否包含炸弹,如果包含则返回 1,否则返回 0。

private in getIfBomb(int row, int col){
 if(cells[row][col].getHasBomb() == true){
  return 1;
}else{
  return 0;
 }
}

最佳答案

不考虑边界检查...

您需要检查之前的列和行,实际的列和行以及之后的列和行....

有点像...

row - 1, col - 1
row - 1, col
row - 1, col + 1
row, col - 1
row, col
row, col + 1
row + 1, col - 1
row + 1, col
row + 1, col + 1

这可能看起来像...

for (int visitRow = row - 1; visitRow < row + 1; visitRow++) {
    for (int visitCol = col - 1; visitCol < col + 1; visitCol++) {
        count += getIfBomb(visitRow, visitCol)
    }
}

现在,您的 getIfBomb 方法将需要对传递的值进行范围检查,以检查它们是否超出数组范围...但我想我可以将其留给你……

关于Java编程——用于扫雷游戏的嵌套for循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19019531/

相关文章:

java - 使用通用返回类型的 Spring Webclient

java - 如何将 Paint 或 Color 传递给使用 Activity 中的 onDraw() 方法的新对象?

javascript - 动态嵌套对象循环js

c - 为什么这段C代码会陷入无限循环?

linux - 在文件的每一行前面打印文件名

java - 删除论文Itext7中的第一行和最后一行属性

java - 在 Java 中将字符串传递给日期

scala - 如何在scala中循环遍历元组

python - 仅当不满足等式时,如何打印语句?

c - 在 for 循环内声明变量; c2000编译器出现错误