我试图编程康威的生命游戏在C,我已经创建了一个二维数组代表的细胞。我试图用一个坐标系统来解决这个游戏。
我编写了一个函数来创建一个数组,该数组强制所有可能的邻居坐标组合。
然后,我使用双嵌套的for循环循环遍历2d单元数组,并计算死的和活的相邻单元的数量。
我有一个条件,检查相邻的单元格是活的,死的,还是不存在的(如果游戏中的单元位于数组的边缘或角落,就会发生这种情况)。
唯一的问题是,不管我做什么,我总是数错活细胞和死细胞的数量,这会导致随后的不正确的世代。
我很确定这是因为我用来跟踪单元格的坐标系统不对应于数组。(我试图解决这个问题,但失败了)
我的问题是,访问2D数组中特定单元格的正确方法是什么,这样数组的行和列对应于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);
}
发布于 2018-01-28 08:34:52
您正在为char *
数组预留空间,但在函数中使用int **
,则更改为
int **world = malloc(sizeof(int *) * rows);
for (int i =0; i < rows; i++) {
world[i] = malloc(sizeof(int) * columns);
}
https://stackoverflow.com/questions/48484509
复制相似问题