gpt4 book ai didi

Conway 的生命游戏 (C) - 坐标不对应于 2D 数组索引?

转载 作者:太空宇宙 更新时间:2023-11-04 02:27:48 25 4
gpt4 key购买 nike

我正在尝试用 C 编写 Conway 的生命游戏。我已经创建了一个表示单元格的二维数组。我尝试使用坐标系来解决游戏。

我编写了一个函数来创建一个数组,该数组强制使用邻居坐标的所有可能组合。

然后我使用双嵌套 for 循环遍历二维单元格数组,并计算死细胞和活细胞的数量。

我有一个条件检查相邻单元格是活的、死的还是不存在的(如果游戏中的单元格位于数组的边缘或角落,则会发生这种情况)。

唯一的问题是,无论我尝试什么,我总是计算错误的活细胞和死细胞数量,这会导致随后的错误世代。

我很确定这是因为我用来跟踪单元格的坐标系与数组不对应。 (我试图解决这个问题,但失败了)

我的问题是,访问二维数组中特定单元格的正确方法是什么,以便数组的行和列对应于 x 轴和 y 轴?

void bruteforceNeighbors(int ** coord, int i, int j){ 
array[0][0] = i-1;
array[0][1] = j-1;

array[1][0] = i-1;
array[1][1] = j;

array[2][0] = i-1;
array[2][1] = j+1;

array[3][0] = i;
array[3][1] = j-1;

array[4][0] = i;
array[4][1] = j+1;

array[5][0] = i+1;
array[5][1] = j-1;

array[6][0] = i+1;
array[6][1] = j;

array[7][0] = i+1;
array[7][1] = j+1;
}

//world is the 2d array

char ** world = (char **)malloc(sizeof(char *)*rows);
for (int i =0;i < rows; i++){
world[i] = (char *) malloc(sizeof(char)*columns);
}

最佳答案

您正在为 char * 数组保留空间,但在函数内部使用 int **,更改为

int **world = malloc(sizeof(int *) * rows);
for (int i =0; i < rows; i++) {
world[i] = malloc(sizeof(int) * columns);
}

关于Conway 的生命游戏 (C) - 坐标不对应于 2D 数组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48484509/

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