(Java) Как я могу хранить свои значения x и y, чтобы использовать их вне циклов for? - PullRequest
0 голосов
/ 12 января 2020

Я кодирую игру жизни Конвея «Обработка 3» и хочу сохранить x и y, чтобы квадраты не менялись сразу, но я не знаю, как сохранить их для последующего использования. Любая помощь приветствуется!

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) {

       }
     }
}
}
}

1 Ответ

1 голос
/ 12 января 2020

Исходя из моего понимания вашего кода (и игры жизни), вам не нужно хранить 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;
            }   
        }
    }
}

Примечание: это можно было бы упростить / написать лучше, но я написал это выше, чтобы вы могли ясно видеть, что я сделал.

...