java - (Java) 如何存储 x 和 y 值以便在 for 循环之外使用它们?

标签 java for-loop conways-game-of-life storing-data

我正在处理 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) {

       }
     }
}
}
}

最佳答案

根据我对您的代码(以及生命游戏)的理解,您不需要存储 xy。您实际需要做的是存储单元改变状态的(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/

相关文章:

java - 在数组中使用循环和随机字符java

javascript - 在javascript中打印对象数组并在html标签中打印

c - hashlife alg 如何在 Golly 永远持续下去?

java - SOLR 和 Lucene 有何关系?

java - 是否递增运算符,例如 count++;在本地存储 volatile 数据线程?

java - 如何让我的应用程序继承用户在 install4j 安装程序中选择的语言?

javascript - html 和 javascript 中的生活游戏不起作用

java - 为什么我会收到 Referenced bean nullChannel not found?

r - 按因子级别对数据框进行子集化

康威的生命游戏缓冲区下溢