gpt4 book ai didi

康威的生命游戏 C

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:15 30 4
gpt4 key购买 nike

我用 C 语言制作了一个康威生活游戏版本,使用一个应该环绕两侧的二维数组。不幸的是,所有发生的事情都是数字在 1 和 0 之间来回闪烁,没有清晰的模式。这是代码:

#include <stdio.h>

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

最佳答案

我注意到一个问题。

第 4 条规则规定,如果一个死细胞正好有 3 个邻居,它应该再次复活。目前,您的代码执行相反的操作

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

如果恰好有 3 个单元格,这将使单元格处于死亡状态,如果不是这样,则使单元格保持事件状态。切换 1 和 0,它应该可以工作。

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

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com