#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;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: