gpt4 book ai didi

java - 在 Java 中使用两个二维数组

转载 作者:行者123 更新时间:2023-11-30 07:56:26 25 4
gpt4 key购买 nike

我不太清楚标题怎么写,但这是我的问题:我正在用 JavaFX 制作 Conway 的生命游戏,我有两个不同大小的二维数组。一个阵列用作游戏板/网格,另一个阵列用作我想插入到板上的图案。假设第一个数组是 60x60,第二个是 3x3。为了制作棋盘和图案,我使用了这样的东西:

//Board
for (int x = 0; x < 60; x++) {
for (int y = 0; y < 60; y++)
board[x][y].setNextState(false);
gc.setFill(Color.LIGHTGRAY);
gc.fillRect(x * 10, y * 10, 9, 9);
}
}

//Pattern
for (int x = 0; x < pattern.length; x++)
for (int y = 0; y < pattern[x].length; y++)
if (pattern[x][y] == 1) {
board[x][y].setNextState(true);
} else {
board[x][y].setNextState(false);
}
gc.setFill(board[x][y].getState() ? Color.rgb(244, 92, 66) : Color.LIGHTGRAY);
gc.fillRect(x * 10, y * 10, 9, 9);
}
}

如上完成后,图案将放置在棋盘的左上方。但是如果我想把它放在中间,我将不得不在模式循环中使用 x = 30 和 y = 30 之类的东西,但这在 if (pattern[x][y] = = 1) 行。我怎样才能使它工作?

我不擅长解释,但我希望我把问题说清楚了!

最佳答案

引用板时对xy位置应用偏移量,引用图案时保持不变。请注意,offsetX 不能 > 板宽 - 图案宽度,与 Y 相同:

int offsetX = 30;
int offsetY = 30;
for (int x = 0; x < pattern.length; x++)
for (int y = 0; y < pattern[x].length; y++)
if (pattern[x][y] == 1) {
board[x + offsetX][y + offsetY].setNextState(true);
} else {
board[x + offsetX][y + offsetY].setNextState(false);
}
gc.setFill(board[x + offsetX][y + offsetY].getState() ? Color.rgb(244, 92, 66) : Color.LIGHTGRAY);
gc.fillRect((x + offsetX) * 10, (y + offsetY) * 10, 9, 9);
}
}

关于java - 在 Java 中使用两个二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42245978/

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