写一个C语言的程序,实现生命游戏
时间: 2023-12-14 15:36:29 浏览: 66
生命游戏是一种模拟细胞生命繁殖和死亡的游戏。在一个二维平面上,每个细胞有两种状态:存活和死亡。根据一定的规则,每个细胞的状态会在每个时刻进行更新。下面是一个简单的 C 语言程序实现生命游戏。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 20
#define COL 40
#define GENERATIONS 100
void init(int board[][COL]);
void print(int board[][COL]);
void update(int board[][COL]);
int main() {
int board[ROW][COL];
srand(time(NULL));
init(board);
print(board);
for (int i = 1; i <= GENERATIONS; i++) {
update(board);
print(board);
}
return 0;
}
void init(int board[][COL]) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
board[i][j] = rand() % 2;
}
}
}
void print(int board[][COL]) {
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%c", board[i][j] ? '*' : ' ');
}
printf("\n");
}
printf("\n");
}
void update(int board[][COL]) {
int neighbor_count;
int next_board[ROW][COL];
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
neighbor_count = 0;
for (int k = -1; k <= 1; k++) {
for (int l = -1; l <= 1; l++) {
if (k == 0 && l == 0) {
continue;
}
int x = i + k;
int y = j + l;
if (x < 0 || x >= ROW || y < 0 || y >= COL) {
continue;
}
neighbor_count += board[x][y];
}
}
if (board[i][j]) {
if (neighbor_count == 2 || neighbor_count == 3) {
next_board[i][j] = 1;
} else {
next_board[i][j] = 0;
}
} else {
if (neighbor_count == 3) {
next_board[i][j] = 1;
} else {
next_board[i][j] = 0;
}
}
}
}
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
board[i][j] = next_board[i][j];
}
}
}
```
在这个程序中,我们使用了一个二维数组来表示细胞的状态。在 `init` 函数中,我们随机初始化了细胞的状态。在 `print` 函数中,我们将细胞的状态输出到控制台。在 `update` 函数中,我们根据规则更新了细胞的状态。最后,我们在 `main` 函数中循环执行了 `update` 函数,并在每次更新后输出细胞的状态。
阅读全文