用Java创建不同类的“生命游戏”

时间:2015-01-24 19:17:35

标签: java class

我正在尝试用不同的课程创造生命游戏,我遇到了麻烦。 我想检查索引行col。

的框中是否有活着的个体

到目前为止,这是我的代码:

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;
        }
    }
}

我不知道该怎么办。我该如何检查?

2 个答案:

答案 0 :(得分: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,了解更多提示。

答案 1 :(得分:0)

我理解的两件事。

  1. 您尚未将事物设置为NULL,并且您正在检查它是否无效。

  2. 您可以设置检查!= NULL以返回true并查看是否有帮助。