生命遊戲——一個簡單的元胞自動機
阿新 • • 發佈:2019-01-24
參考書目《元胞自動機理論研究及其模擬應用》科學出版社
元胞狀態:0——死亡 1——活著
領域半徑:1
鄰居模型:Moore型
演化規則
S(t) | 條件 | S(t+1) |
1 | S = 2或3 | 1 |
1 | S ≠2、3 | 0 |
0 | S = 3 | 1 |
0 | S ≠ 3 | 0 |
其中S(t)表示t 時刻元胞的狀態,S為8個相鄰元胞中活著的元胞數
#include<graphics.h> int main() { int orgData[100][100], resData[100][100]; int nCount, nRows, nCols, i, j, times; int GraphDriver = DETECT, GraphMode; for (i = 0; i <100; i++) for (j = 0; j < 100; j++) orgData[i][j] = 1; initgraph(&GraphDriver, &GraphMode, "");//初始化螢幕 setcolor(WHITE); rectangle(270, 190, 370, 290);//顯示邊框 for (times = 1; times < 200; times++) { for (nRows = 1; nRows < 99; nRows++) { for (nCols = 1; nCols < 99; nCols++) { nCount = orgData[nRows - 1][nCols - 1] + orgData[nRows - 1][nCols] + orgData[nRows - 1][nCols + 1] + orgData[nRows][nCols - 1] + orgData[nRows][nCols + 1] + orgData[nRows + 1][nCols - 1] + orgData[nRows + 1][nCols] + orgData[nRows + 1][nCols + 1]; switch (nCount) { case(3):putpixel(nCols + 270, 190 + nRows, BLACK); resData[nRows][nCols] = 1; break; case(2):resData[nRows][nCols] = orgData[nRows][nCols]; break; default:resData[nRows][nCols] = 0; putpixel(nCols + 270, 190 + nRows, WHITE); } } } for (i = 1; i < 99; i++) for (j = 1; j < 99; j++) orgData[i][j] = resData[i][j]; } return 0; }
注:程式碼摘自參考書目