【发布时间】:2022-01-16 00:40:08
【问题描述】:
目前尝试创建生命游戏,它输出所有世代(6)并接受用户输入(或者如果选择自动执行),但初始人口之后的下一代不会随着游戏的更新而更新生活规则,但与初始人口保持一致:
规则:
- 任何活细胞少于两个活的邻居都会死亡,就像人口不足一样。
- 任何有两三个活邻居的活细胞都可以传给下一代。
- 任何有超过三个活邻居的活细胞都会死亡,就像人口过剩一样。
- 任何只有三个活邻居的死细胞都会变成活细胞,就像通过繁殖一样。
如果能帮助您解决这个错误,我们将不胜感激!
// Produce the next generation
void reproduce(int grid[][m]){
int newGrid[n][m];
for (int i=0; i<n; i++) {
for (int j=0; j<m; j++) {
newGrid[i][j] = grid[i][j]; // Copying old grid to a new grid
}
}
// Applying rules for next generation
for (int i=0; i<n; i++) {
for (int j=0; j<m; j++) {
int cellNeighbours = countNeighbours(grid, i, j);
// Live cell rules
if (cellNeighbours < 2 && grid[i][j] == 1) {
newGrid[i][j] == 0;
}
if (cellNeighbours > 3 && grid[i][j] == 1) {
newGrid[i][j] == 0;
}
if (cellNeighbours == 2 && grid[i][j] == 1) {
newGrid[i][j] == 1;
}
if (cellNeighbours == 3 && grid[i][j] == 1) {
newGrid[i][j] == 1;
}
// Dead cell rules
if (cellNeighbours == 3 && grid[i][j] == 0) {
newGrid[i][j] == 1;
}
}
}
}
【问题讨论】:
-
在
reproduce中,您似乎在计算后忘记将grid设置为newGrid。
标签: c++ arrays conways-game-of-life