Java 当试图将网格上的所有特定正方形变成深蓝色时,如何停止出错
我不知道如何解决这个问题。我的程序基本上是在32乘32的网格上随机生成绿色块(它不会填充整个网格)。如果我点击一个空白点,它会变成蓝色,并且应该扩散到所有其他空白点,但不会改变绿色(陆地)。如果我点击一个连接到屏幕边缘的区域,它将变成深绿色,并扩散到所有其他空白点。我的问题是,如果我点击一个连接到屏幕边缘的正方形,我只会得到一个错误,虽然它会扩散,但并不总是扩散到每个点,而且颜色也不一样 这是使它传播的代码Java 当试图将网格上的所有特定正方形变成深蓝色时,如何停止出错,java,if-statement,boolean,Java,If Statement,Boolean,我不知道如何解决这个问题。我的程序基本上是在32乘32的网格上随机生成绿色块(它不会填充整个网格)。如果我点击一个空白点,它会变成蓝色,并且应该扩散到所有其他空白点,但不会改变绿色(陆地)。如果我点击一个连接到屏幕边缘的区域,它将变成深绿色,并扩散到所有其他空白点。我的问题是,如果我点击一个连接到屏幕边缘的正方形,我只会得到一个错误,虽然它会扩散,但并不总是扩散到每个点,而且颜色也不一样 这是使它传播的代码 void findLakes(int x, int y) { if (b
void findLakes(int x, int y) {
if (board[x][y] != EMPTY)
return;
board[x][y] = LAKE;
if (y > 0 && board[x][y - 1] == EMPTY)
findLakes(x, y - 1);
if (y < GRID - 1 && board[x][y + 1] == EMPTY)
findLakes(x, y + 1);
if (x > 0 && board[x - 1][y] == EMPTY)
findLakes(x - 1, y);
if (x < GRID - 1 && board[x + 1][y] == EMPTY)
findLakes(x + 1, y);
if (x == 0) findOceans(x,y);
}
// if (... square is on the edge of the board) findOceans(x,y);
void findOceans(int x, int y) {
if (board[x][y] == LAKE) board [x][y] = OCEAN;
if (((y > 0) && (board[x][y - 1] == LAKE)) || (board[x][y - 1] == EMPTY ))
findOceans(x, y - 1);
if (((y < GRID - 1) && (board[x][y + 1] == LAKE)) || (board[x][y + 1] == EMPTY))
findOceans(x, y + 1);
if (((x > 0) && (board[x - 1][y] == LAKE)) || (board[x][x - 1] == EMPTY))
findOceans(x - 1, y);
if (((x < GRID - 1 ) && (board[x + 1][y] == LAKE)) || (board[x][x + 1] == EMPTY))
findOceans(x + 1, y);
}
我的描述有点让人困惑,所以如果你有任何问题,我可以试着回答 我只是得到了一个错误——那么错误是什么呢。我猜您会遇到IndexOutOfBounds类型错误。我确信你得到了一个带有错误的堆栈跟踪。因此,找到导致错误的语句,然后修复索引。
void makeRandomMap() {
int i, j;
boolean done = false;
int landTiles = 0;
while (!done) {
i = (int) (Math.random() * GRID);
j = (int) (Math.random() * GRID);
if (board[i][j] == EMPTY) {
board[i][j] = LAND;
landTiles++;
if (landTiles == NUM_LAND)
done = true;
}
}
}