首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

生命遊戲 C 語言實現:基於 EasyX 圖形庫的細胞自動機模擬

     編輯:關於C語言

生命遊戲規則

二維矩形世界,每個方格住著活或死的細胞。下一時刻生死取決於相鄰八格活細胞數:

  • 活鄰居 > 3:資源匱乏,下一時刻死。
  • 活鄰居 == 3:誕生新細胞(或維持活)。
  • 活鄰居 == 2:狀態不變。
  • 活鄰居 < 2:過於孤單,下一時刻死。

形成動態平衡。

核心代碼結構

  • __int8 world[102][102]:世界狀態陣列(含邊界)。
  • IMAGE imgLive, imgEmpty:活/死細胞圖案。
  • Init():初始化視窗、隨機種子、繪製細胞圖案(綠色圓點/灰色方框)、輸出說明、產生預設方形分布世界。
  • SquareWorld():邊界為活細胞的方形世界。
  • RandWorld():隨機分布世界。
  • PaintWorld():根據 world 繪製畫面。
  • Evolution():計算下一代狀態,使用臨時陣列 tmp 存放新狀態,最後 memcpy 回 world。

主迴圈

int main() {
    Init();
    int Speed = 500; // 毫秒
    while (true) {
        if (kbhit() || Speed == 900) {
            char c = getch();
            if (c == ' ' && Speed != 900) c = getch();
            if (c >= '0' && c <= '9') Speed = ('9' - c) * 100;
            switch (c) {
                case 's': case 'S': SquareWorld(); break;
                case 'r': case 'R': RandWorld(); break;
                case VK_ESCAPE: goto END;
            }
        }
        Evolution();
        PaintWorld();
        if (Speed != 900) Sleep(Speed);
    }
END:
    closegraph();
    return 0;
}

運行效果

生命遊戲運行截圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved