Я работаю над версией игры Жизни Конвея, и я создал метод создания нового поколения, где я копирую матрицу и искал соседних соседей. Однако я хотел бы разделить этот метод на два отдельных метода. Метод копирования матрицы, а затем оригинал newGeneration вызовет copy() для справки. Вот как выглядит мой метод newGeneration прямо сейчас.Копия игры Матрица Жизни
public void newGeneration() {
temp = new boolean[board.getRows()][board.getCols()];
for (int i = 0; i < board.getRows(); i++) {
for (int j = 0; j < board.getCols(); j++) {
if (board.get(i, j)==true) {
if (getNeighbours(board, i, j) > 3) {
temp[i][j] = false;
} else if (getNeighbours(board, i, j) < 2) {
temp[i][j] = false;
} else{
temp[i][j] = true;
}
} else if (board.get(i, j) == false) {
if (getNeighbours(board, i, j) == 3) {
temp[i][j] = true;
}
}
}
}
for (int i = 0; i < board.getRows(); i++) {
for (int j = 0; j < board.getCols(); j++) {
board.put(i, j, temp[i][j]);
}
}
Я хочу разбить это на два метода: newGeneration() и copy(). Я работаю над этим некоторое время, но я, кажется, испортил переменные i и j, потому что они локально заданы в циклах. Любая помощь с расщеплением этого метода до двух будет оценена, спасибо!
EDIT:
С каким мудрым советом рекомендуя мне this поста, я сделал что-то вроде этого
public void newGeneration() {
boolean[][] tempCells = new boolean [board.getRows()][board.getCols()];
for (int row = 0; row < board.getRows(); row++) {
for (int col = 0; col < board.getCols(); col++) {
int n = getNeighbours(board,row,col);
if (n > 3 || n < 2)
tempCells[row][col] = false;
else if (n == 3)
tempCells[row][col] = true;
else
tempCells[row][col] = temp[board.getRows()][board.getCols()];
}
}
}
Но это, кажется, не работает должным образом.
Если вы используете IDE как Eclipse, вы можете легко выбрать сегмент кода и нажмите Ctrl + Alt + M для экстракт метод. IDE позаботится о переменных. – Vishal
Что именно вы хотите, чтобы ваши два метода делали? – Eypros
Мне непонятно, что вы просите. –