2014-11-26 3 views
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()]; 
     } 
    } 
} 

같은 것을 만들어 그러나 제대로 작동하지 않는 것 같습니다.

+2

, 쉽게 코드 세그먼트하고 Ctrl + Alt + M을 선택할 수 있습니다 : 클론 그냥 얕은 사본을 제공하기 때문에, 다차원 배열의 각 추가 차원을 명시 적으로 복제가 필요합니다 추출 방법. IDE가 변수를 처리합니다. – Vishal

+0

정확히 두 가지 방법으로 수행하기를 원하십니까? – Eypros

+0

내가 무엇을 요구하고 있는지 분명하지 않습니다. –

답변

0

배열의 복사본을 얻는 간단한 방법은 복제입니다.

이클립스와 같은 IDE를 사용하는 경우
public static boolean[][] copy(boolean[][] source) { 
    boolean[][] copy = source.clone(); 
    for (int i=0; i<copy.length; ++i) { 
     copy[i] = copy[i].clone(); 
    } 
    return copy; 
} 
관련 문제