space Java 中基于文本的扫雷克隆中的空白 space 扩展
Blank space expansion in text-based Minesweeper clone in Java
当出现问题时,我正在 Java 中制作基于文本的扫雷克隆版。
我的观点是,如果您单击黑色 space,它 应该 显示该空白 space 周围的所有空白 space 并且空白 space 周围的所有空白 space,等等
我目前的代码:
public void exposeAround(){
//Row = inputRow and Column = inputColumn
for(int row = Row-1; row < Row+1; row++){
for(int col = Column-1; col < Column+1; col++){
if((row < 0) || (row > 8) || (col < 0) || (col < 8)){
continue;
} else{
if(mines[row][col] == '.'){
board[row][col] = mines[row][col];
System.out.println("Test");
exposeAround();
} else{
board[row][col] = mines[row][col];
}
}
}
}
}
它不会抛出任何错误,但是在这个方法 运行 之后它不会做任何事情 ,即使在我 运行 printBoard();
方法
如果您对我的代码的其他部分有任何疑问,请告诉我。
我试图找到这个答案,但我唯一能找到的是基于 GUI 的扫雷
编辑:谢谢大家的帮助,我已经解决了我的问题。
您可以使用简单的填充算法来打开空白空间。
它将看起来像这样:
public void exposeAround(int x1, int y1){
//if position (x1, y1) is a bomb or number
// return
//if outOfBounds(x1, y1)
// return
//open up location (x1, y1)
//exposeAround(x1-1, y1) - flood north
//exposeAround(x1+1, y1) - flood south
//exposeAround(x1-1, y1-1) - flood west
//exposeAround(x1-1, y1+1) - flood east
}
所以它将 "flood" 所有 4 个方向。一次 1 个方向。当它碰到边界(炸弹、数字、二维数组的边界)时,它会回溯到最后一个好的位置以继续 "flooding" 过程。
当出现问题时,我正在 Java 中制作基于文本的扫雷克隆版。 我的观点是,如果您单击黑色 space,它 应该 显示该空白 space 周围的所有空白 space 并且空白 space 周围的所有空白 space,等等
我目前的代码:
public void exposeAround(){
//Row = inputRow and Column = inputColumn
for(int row = Row-1; row < Row+1; row++){
for(int col = Column-1; col < Column+1; col++){
if((row < 0) || (row > 8) || (col < 0) || (col < 8)){
continue;
} else{
if(mines[row][col] == '.'){
board[row][col] = mines[row][col];
System.out.println("Test");
exposeAround();
} else{
board[row][col] = mines[row][col];
}
}
}
}
}
它不会抛出任何错误,但是在这个方法 运行 之后它不会做任何事情 ,即使在我 运行 printBoard();
方法
如果您对我的代码的其他部分有任何疑问,请告诉我。 我试图找到这个答案,但我唯一能找到的是基于 GUI 的扫雷
编辑:谢谢大家的帮助,我已经解决了我的问题。
您可以使用简单的填充算法来打开空白空间。
它将看起来像这样:
public void exposeAround(int x1, int y1){
//if position (x1, y1) is a bomb or number
// return
//if outOfBounds(x1, y1)
// return
//open up location (x1, y1)
//exposeAround(x1-1, y1) - flood north
//exposeAround(x1+1, y1) - flood south
//exposeAround(x1-1, y1-1) - flood west
//exposeAround(x1-1, y1+1) - flood east
}
所以它将 "flood" 所有 4 个方向。一次 1 个方向。当它碰到边界(炸弹、数字、二维数组的边界)时,它会回溯到最后一个好的位置以继续 "flooding" 过程。