#include <stdio.h>
#include <stdlib.h>
#include <time.h> // 使用标准时间库代替 windows.h
#define ROWS 20
#define COLS 40
#define ALIVE 'O'
#define DEAD ' '
int grid[ROWS + 2][COLS + 2];
int next_grid[ROWS + 2][COLS + 2];
// 清屏并把光标移回左上角
void clear_screen() {
printf("\033[H\033[J");
}
// 初始化:加入一个经典的“滑翔机”图案
void init_grid() {
for (int i = 0; i <= ROWS + 1; i++) {
for (int j = 0; j <= COLS + 1; j++) {
grid[i][j] = 0;
}
}
grid[5][6] = 1;
grid[6][7] = 1;
grid[7][5] = 1;
grid[7][6] = 1;
grid[7][7] = 1;
}
// 核心逻辑:更新细胞状态
void update_grid() {
for (int i = 1; i <= ROWS; i++) {
for (int j = 1; j <= COLS; j++) {
int neighbors = 0;
for (int di = -1; di <= 1; di++) {
for (int dj = -1; dj <= 1; dj++) {
if (di == 0 && dj == 0) continue;
neighbors += grid[i + di][j + dj];
}
}
if (grid[i][j] == 1) {
next_grid[i][j] = (neighbors == 2 || neighbors == 3) ? 1 : 0;
} else {
next_grid[i][j] = (neighbors == 3) ? 1 : 0;
}
}
}
for (int i = 1; i <= ROWS; i++) {
for (int j = 1; j <= COLS; j++) {
grid[i][j] = next_grid[i][j];
}
}
}
// 打印当前画面
void print_grid() {
clear_screen();
for (int i = 1; i <= ROWS; i++) {
for (int j = 1; j <= COLS; j++) {
putchar(grid[i][j] ? ALIVE : DEAD);
putchar(' ');
}
putchar('\n');
}
}
// 跨平台的延时函数 (毫秒)
void delay_ms(int milliseconds) {
long pause;
clock_t now, then;
pause = milliseconds * (CLOCKS_PER_SEC / 1000);
now = then = clock();
while ((now - then) < pause) {
now = clock();
}
}
int main() {
init_grid();
while (1) {
print_grid();
update_grid();
// 控制速度:100毫秒
delay_ms(100);
}
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: