本世紀70年代,人們曾瘋魔一種被稱作“生命游戲”的小游戲,這種游戲相當簡單。假設有一個像棋盤一樣的方格網,每個方格中放置一個生命細胞,生命細胞只有兩種狀態:“生”或“死”。游戲規則如下: 1. 如果一個細胞周圍有3個細胞為生(一個細胞周圍共有8個細胞),則該細胞為生,即該細胞若原先為死,則轉為生,若原先為生,則保持不變; 2. 如果一個細胞周圍有2個細胞為生,則該細胞的生死狀態保持不變; 3. 在其它情況下,該細胞為死,即該細胞若原先為生,則轉為死,若原先為死,則保持不變設定圖像中每個像素的初始狀態后依據上述的游戲規則演繹生命的變化,由于初始狀態和迭代次數不同,將會得到令人嘆服的優美圖案。 #include <graphics.h> main(){ int orgData[100][100],resData[100][100];/*分別記錄每次迭代的初始和結果狀態*/ int nCount,nRows,nCols,i,j,times; /*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){ /*周圍有3個活細胞,該細胞為生,在屏幕上用黑色像素表示*/ case 3: putpixel(nCols+210,120+nRows,BLACK); resData[nRows][nCols]=1;break; /*周圍有2個活細胞,該細胞不變,在屏幕顯示也不變*/ case 2: resData[nRows][nCols]=orgData[nRows][nCols]; break; /*其它情況下,細胞為死,在屏幕上用白色像素表示*/ default:resData[nRows][nCols]=0; putpixel(nCols+210,120+nRows,WHITE); } } } for (i=1;i<99;i++) for (j=1;j<99;j++) orgData[i][j]=resData[i][j]; getch(); } }
|