首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >康威的生命游戏(C) -坐标不对应于二维数组索引?

康威的生命游戏(C) -坐标不对应于二维数组索引?
EN

Stack Overflow用户
提问于 2018-01-28 08:29:43
回答 1查看 351关注 0票数 1

我试图编程康威的生命游戏在C,我已经创建了一个二维数组代表的细胞。我试图用一个坐标系统来解决这个游戏。

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

然后,我使用双嵌套的for循环循环遍历2d单元数组,并计算死的和活的相邻单元的数量。

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

唯一的问题是,不管我做什么,我总是数错活细胞和死细胞的数量,这会导致随后的不正确的世代。

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

我的问题是,访问2D数组中特定单元格的正确方法是什么,这样数组的行和列对应于x和y轴?

代码语言:javascript
运行
复制
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;
} 
代码语言:javascript
运行
复制
//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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-28 08:34:52

您正在为char *数组预留空间,但在函数中使用int **,则更改为

代码语言:javascript
运行
复制
int **world = malloc(sizeof(int *) * rows);
for (int i =0; i < rows; i++) {
    world[i] = malloc(sizeof(int) * columns);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48484509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档