我用C语言制作了一个conways生活游戏的版本,使用的是一个二维数组,该数组应该环绕在两边。不幸的是,所有发生的只是数字在1到0之间来回移动,没有清晰的模式。代码如下:
#包括

int main(){
    int const WIDTH = 100;
    int const HEIGHT = 100;
    int const CYCLES = 1000;
    int grid[HEIGHT][WIDTH];
    int temp[HEIGHT][WIDTH];

    int row;
    int col;
    for(row = 0; row < HEIGHT; row++){
        for(col = 0; col < WIDTH; col++){
            grid[row][col] = 0;
        }
    }

    int i;
    int x;
    int y;
    int neighbours;
    for(i = 0; i < CYCLES; i++){
        for(row = 0; row < HEIGHT; row++){
            for(col = 0; col < WIDTH; col++){
                temp[row][col] = 0;
            }
        }
        for(row = 0; row < HEIGHT; row++){
            for(col = 0; col < WIDTH; col++){
                neighbours = 0;
                for(y = -1; y < 2; y++){
                    for(x = -1; x < 2; x++){
                        if(x != 0 && y != 0 && grid[(row + y) % HEIGHT][(col + x) % WIDTH] == 1){
                            neighbours++;
                        }
                    }
                }
                if(grid[row][col] == 1){
                    if(neighbours < 2 || neighbours > 3){
                        temp[row][col] = 0;
                    }else{
                        temp[row][col] = 1;
                    }
                }else if(grid[row][col] == 0){
                    if(neighbours == 3){
                        temp[row][col] = 0;
                    }else{
                        temp[row][col] = 1;
                    }
                }
            }
        }
        for(row = 0; row < HEIGHT; row++){
            for(col = 0; col < WIDTH; col++){
                grid[row][col] = temp[row][col];
                printf("%d", grid[row][col]);
            }
            printf("\n");
        }
        printf("\n");
    }
}

最佳答案

我确实注意到一个问题。
第四条规则规定,如果一个死细胞只有三个邻居,那么它应该再次存活。目前,您的代码的作用正好相反

else if(grid[row][col] == 0){
    if(neighbours == 3){
        temp[row][col] = 0;
    }else{
        temp[row][col] = 1;
    }
}

如果真的有3个,这将使细胞死亡,如果不是这样的话,则使细胞存活。切换1和0,它应该可以工作。

关于c - 康威的C生活游戏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33855578/

10-10 23:59