2015-01-24 2 views
-3

다른 게임으로 Game of Life를 만들고자하는데 문제가 생겼습니다. 색인 행이있는 상자에 살아있는 사람이 있는지 확인하고 싶습니다. col. 어떻게 해야할지 모르겠어요다른 클래스의 Java에서 "Game of Life"만들기

public class LifeBoard { 

    private int rows; 
    private int cols; 
    private int generation; 


    /**Creates a playing field with rows as rows and cols as columns. 
    The counter for generations is 1.*/ 
    public LifeBoard(int rows, int cols) { 
     this.rows = rows; 
     this.cols = cols; 
     this.generation = 1; 
    } 

    /**Checks if there's a living individual in the box row, col*/ 
    public boolean get(int row, int col) { 
     if(this.board[row][col] == null){ 
      return false; 
     } else { 
      return true; 
     } 
    } 
} 

:

여기에 지금까지 내 코드입니다. 이걸 어떻게 확인합니까?

+1

귀하의 질문이 너무 광범위합니다. "특정 응용 프로그램을 어떻게 만들 수 있습니까?"와 같은 질문이 아닌 특정 엔지니어링 질문을 시도해보십시오. –

답변

0

내가 이해 한 두 가지.

  1. 당신은 NULL로 일을 설정하지 않은 당신은 작동하지 않을 것입니다 그것에 대한 검사를하고 있습니다.

  2. ! = NULL에 대한 확인을 설정하여 true를 반환하고 이것이 도움이되는지 확인할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 네, 그 일을하려고하지만 그럴 수 없기 때문에 나는 그것을 (if [col] [row] == null) 등등으로 둡니다. – ladvad

1

게임을 모델링 한 방법에 따라 다릅니다. 이 코드는 boolean[][] 격자로 가정합니다.

셀을 둘러싸고있는 셀은 최대 8 개입니다. 그리드의 경계를 확인해야하기 때문에 모든 셀을 둘러싼 8 개의 셀이 없을 수 있습니다.

public synchronized void cycleGrid() { 
    this.generationCount++; 

    for (int i = 0; i < GRID_WIDTH; i++) { 
     for (int j = 0; j < GRID_WIDTH; j++) { 
      int count = countCells(i, j); 
      if (count == 3) grid[i][j] = true; 
      if (grid[i][j] && count < 2) grid[i][j] = false; 
      if (grid[i][j] && count > 3) grid[i][j] = false; 
     } 
    } 
} 

private int countCells(int i, int j) { 
    int count = 0; 

    int iminus = i - 1; 
    int jminus = j - 1; 
    int iplus = i + 1; 
    int jplus = j + 1; 

    if (iminus >= 0) { 
     if (jminus >= 0) { 
      if (grid[iminus][jminus]) count++; 
     } 

     if (grid[iminus][j])   count++; 

     if (jplus < GRID_WIDTH) { 
      if (grid[iminus][jplus]) count++; 
     } 
    } 

    if (jminus >= 0) { 
     if (grid[i][jminus])   count++; 
    } 

    if (jplus < GRID_WIDTH) { 
     if (grid[i][jplus])    count++; 
    } 

    if (iplus < GRID_WIDTH) { 
     if (jminus >= 0) { 
      if (grid[iplus][jminus]) count++; 
     } 

     if (grid[iplus][j])    count++; 

     if (jplus < GRID_WIDTH) { 
      if (grid[iplus][jplus])  count++; 
     } 
    } 

    return count; 
} 

자세한 내용은 내 문서 John Conway’s Game of Life in Java Swing을 참조하십시오.

관련 문제