我正在处理 3 上编写康威的生命游戏,我想存储 x 和 y,以便方 block 不会立即改变,但我不知道如何存储它以供以后使用。如有任何帮助,我们将不胜感激!
void keyPressed() {
for (int x = 0; x < 30; x++) {
for (int y = 0; y < 30; y++) {
int numNeighbours = numNeighbours(x,y);
if (cells[x][y] == true) {
if (numNeighbours > 3 || numNeighbours <= 1) { //underpopulation or overpopulation
}
}
else if (cells[x][y] == false) {
if (numNeighbours == 3) {
}
}
}
}
}
最佳答案
根据我对您的代码(以及生命游戏)的理解,您不需要存储 x
和 y
。您实际需要做的是存储单元改变状态的(x, y)
对。
您可以通过创建对并将它们添加到列表中来完成此操作。
但另一个想法是使用第二个数组代表下一代游戏,并将所有新值放在那里;例如
for (int x = 0; x < 30; x++) {
for (int y = 0; y < 30; y++) {
int numNeighbours = numNeighbours(x,y);
if (cells[x][y] == true) {
if (numNeighbours > 3 || numNeighbours <= 1) {
cellsNext[x][y] = false;
} else {
cellsNext[x][y] = true;
}
}
else if (cells[x][y] == false) {
if (numNeighbours == 3) {
cellsNext[x][y] = true;
} else {
cellsNext[x][y] = false;
}
}
}
}
注意:这可以简化/写得更好,但我已经按照上面的方式编写了,以便您可以清楚地看到我做了什么。
关于java - (Java) 如何存储 x 和 y 值以便在 for 循环之外使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59700796/