目前正在制作一个扫雷游戏并坚持能够循环遍历周围的 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/