0
저는 Conway의 Game of Life에서 일하고 있습니다. 새로운 세대를 만드는 방법을 만들었습니다. 여기서 매트릭스를 복사하고 근처의 이웃을 찾습니다. 그러나 나는이 방법을 두 개의 분리 된 방법으로 나누고 싶다. 행렬의 복사 메소드와 원래의 newGeneration은 copy()를 호출하여 도움을 요청합니다. 이것이 내 newGeneration 메서드가 지금과 같은 모습입니다.Game of Life 매트릭스 복사
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가 엉망이 된 것 같습니다. 이 방법을 2로 나누면 도움이 될 것입니다. 감사합니다!
편집
: 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()];
}
}
}
같은 것을 만들어 그러나 제대로 작동하지 않는 것 같습니다.
, 쉽게 코드 세그먼트하고 Ctrl + Alt + M을 선택할 수 있습니다 : 클론 그냥 얕은 사본을 제공하기 때문에, 다차원 배열의 각 추가 차원을 명시 적으로 복제가 필요합니다 추출 방법. IDE가 변수를 처리합니다. – Vishal
정확히 두 가지 방법으로 수행하기를 원하십니까? – Eypros
내가 무엇을 요구하고 있는지 분명하지 않습니다. –