用C语言实现康威生命游戏
时间: 2024-05-02 22:16:39 浏览: 113
康威:用C语言实现康威生活游戏
康威生命游戏是一种基于细胞自动机的零玩家游戏,其规则如下:
1. 当前细胞为活细胞时,当周围活细胞数为2或3时,该细胞下一代仍为活细胞;否则下一代为死细胞。
2. 当前细胞为死细胞时,当周围活细胞数为3时,该细胞下一代为活细胞;否则下一代为死细胞。
以下是用C语言实现康威生命游戏的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define ROWS 20
#define COLS 20
// 初始化细胞状态
void init_cells(int cells[][COLS]) {
srand(time(NULL));
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
cells[i][j] = rand() % 2;
}
}
}
// 更新细胞状态
void update_cells(int cells[][COLS]) {
int temp[ROWS][COLS] = {{0}};
for (int i = 1; i < ROWS - 1; i++) {
for (int j = 1; j < COLS - 1; j++) {
int live_count = 0;
for (int x = i - 1; x <= i + 1; x++) {
for (int y = j - 1; y <= j + 1; y++) {
if (x == i && y == j) continue;
if (cells[x][y] == 1) live_count++;
}
}
if (cells[i][j] == 1) {
if (live_count == 2 || live_count == 3) {
temp[i][j] = 1;
} else {
temp[i][j] = 0;
}
} else {
if (live_count == 3) {
temp[i][j] = 1;
} else {
temp[i][j] = 0;
}
}
}
}
for (int i = 1; i < ROWS - 1; i++) {
for (int j = 1; j < COLS - 1; j++) {
cells[i][j] = temp[i][j];
}
}
}
// 打印细胞状态
void print_cells(int cells[][COLS]) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
if (cells[i][j] == 1) {
printf("*");
} else {
printf(" ");
}
}
printf("\n");
}
}
int main() {
int cells[ROWS][COLS];
init_cells(cells);
for (int i = 0; i < 100; i++) {
system("clear"); // 清屏
print_cells(cells);
update_cells(cells);
usleep(500000); // 延时
}
return 0;
}
```
该程序使用二维数组表示细胞状态,随机初始化细胞状态,然后在循环中打印细胞状态并更新细胞状态,最后实现了康威生命游戏的效果。
阅读全文