2012-09-19 3 views
1

저는 콘웨이의 삶의 게임을 구현하고 있습니다. 나는 inittal 보드에서 읽었으며 지금은 셀의 이웃을 셀 수 있도록 프로그래밍해야합니다.Conway의 Game of Life에서 셀의 라이브 이웃을 계산하는 방법은 무엇입니까?

몇 가지 기본 규칙

두 개 미만 라이브 이웃과 모든 살아있는 세포

에서 인구에 의한 것처럼 죽는다. 2 ~ 3 개의 라이브 이웃이있는 모든 라이브 셀은 다음 세대에 계속 살아 있습니다. 과밀한 경우처럼 3 개 이상의 라이브 이웃이있는 모든 라이브 셀이 종료됩니다. 정확히 3 개의 살아있는 이웃이있는 모든 죽은 세포는 마치 생식 세포처럼 살아있는 세포가됩니다.

여기에 이미있는 코드가 있습니다.

업데이트 : 이것은 초기 조언을 한 후에 변경된 코드입니다.

/** 
* Write your comments here following the javadoc conventions 
*/ 
public static int countNeighbours(boolean[][] board, int row, int col) 
{ 
    int neighbours = 0; 
    int x = -1; 
    while (x <= 1) { 
     int y = -1; 
     while (y <= 1) { 
      if (board[row][col] == true) { 

       neighbours++; 
      } 
      // Given a 2D boolan array and a cell location given by its 
      // row and column indecies, count the number of live cells 
      // immediately surrounding the given cell. Remember that you 
      // mustn't count the cell itself. 

     } 


    } 
    return neighbours; 
} 

올바른 경로에 있습니까?

+1

http://docs.oracle.com/javase/tutorial/이 정보는 도움이됩니다 ... –

+0

또한 [이 답변] (http://stackoverflow.com/questions/8199460/issue-with-game- of-life/8200046 # 8200046). –

+0

한 가지는 오류를 돕는 것이며, 또 다른 것은 코드를 제공하여 학습을 건너 뛸 수 있습니다 (즉, 운동의 이유이며, 교수님은 매년 그 프로그램을 100 부씩 필요로하지 않습니다). – SJuan76

답변

2

나는 내가이 내가 당신에게 완전한 대답을하려는 전형적인 학교 과제입니다 알고 있기 때문에

if (board[row][col]) { 
2

같 어느

if (board[row][col] == true) { 

을하고 싶은 생각하지만 당신은 안 redifine 행을 호출하고 다른 것을 호출하면 루프는 row-1에서 row+1col-1에서 col+1으로 이동해야합니다. 당신이 당신의 보드가 글로벌 만들 수 있다면

+0

귀하의 조언에 감사드립니다. 이게 더 좋은가요? 답변을 업데이트했습니다. – user1605782

0

,이 랩 어라운드으로 하나의 셀에 대해 작동 할 수 있습니다 :

public Cell[] getNeighbours(int i, int j) { 
int i2 = i - 1, i3 = i + 1, j2 = j - 1, j3 = j + 1; 
if (i2 == -1) i2 = board.length - 1; 
if (i3 == (board.length)) i3 = 0; 
if (j2 == -1) j2 = board[i].length - 1; 
if (j3 == (board[i].length)) j3 = 0; 
return new Cell[]{board[i2][j2], board[i2][j], board[i2][j3], board[i][j2], board[i][j3], board[i3][j2], board[i3][j], board[i3][j3]}; 

}

은 그럼 그냥 살아 방법이 세포의 많은 계산하고를 반환합니다.

관련 문제