使用不同类在Java中创建“生活游戏”

使用不同类在Java中创建“生活游戏”,java,class,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

我试图用不同的课程来创造生活游戏,但我遇到了麻烦。 我想检查索引行为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;
        }
    }
}

我不知道该怎么办。我该如何检查这一点呢?

根据我所了解的两件事

您没有将内容设置为NULL,您正在检查它是否无效

你可以设置一张支票=NULL返回true,看看这是否有帮助


这取决于你对游戏的建模方式。此代码假定为布尔[]网格

一个单元周围最多有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;
}

更多提示,请参阅我的文章。

谢谢您的回复。是的,我正在尝试这样做,但我不知道如何检查它,因为我不能把像if[col][row]==null等…你的问题太广泛了。请尝试问一个特定的工程问题,而不是像我如何让我的应用程序执行[x]这样的问题?