C語言實現(xiàn)生命游戲
本世紀70年代,人們曾瘋魔一種被稱作“生命游戲”的小游戲,這種游戲相當簡單。假設(shè)有一個像棋盤一樣的方格網(wǎng),每個方格中放置一個生命細胞,生命細胞只有兩種狀態(tài):“生”或“死”。游戲規(guī)則如下:
1. 如果一個細胞周圍有3個細胞為生(一個細胞周圍共有8個細胞),則該細胞為生,即該細胞若原先為死,則轉(zhuǎn)為生,若原先為生,則保持不變;
2. 如果一個細胞周圍有2個細胞為生,則該細胞的生死狀態(tài)保持不變;
3. 在其它情況下,該細胞為死,即該細胞若原先為生,則轉(zhuǎn)為死,若原先為死,則保持不變。
依此規(guī)則進行迭代變化,使細胞生生死死,會得到一些有趣的結(jié)果。該游戲之所以被稱為“生命游戲”,是因為其簡單的游戲規(guī)則,反映了自然界中的生存規(guī)律:如果一個生命,其周圍的同類生命太少的話,會因為得不到幫助而死亡;如果太多,則會因為得不到足夠的資源而死亡。
用計算機模擬這個“生命游戲”也相當簡單,可以用一個M×N像素的圖像來代表M×N個細胞,其中每一個像素,代表一個細胞,像素為黑色表示細胞為生,像素為白色代表細胞為死。
設(shè)定圖像中每個像素的初始狀態(tài)后依據(jù)上述的游戲規(guī)則演繹生命的變化,由于初始狀態(tài)和迭代次數(shù)不同,將會得到令人嘆服的優(yōu)美圖案。
下面給出的小程序是用TC2.0編寫。演示100×100個生命細胞初始狀態(tài)全為生時的變代情況,變化時邊緣細胞不參與變化。隨著迭代次數(shù)的不同,在屏幕顯示的圖案精彩紛呈,像萬花筒般引人入勝。
#include
main(){
int orgData[100][100],resData[100][100];/*分別記錄每次迭代的初始和結(jié)果狀態(tài)*/
int nCount,nRows,nCols,i,j,times; /*times記錄迭代次數(shù)*/
int GraphDriver=DETECT,GraphMode;
for (i=0;i<100;i++) /*初始化數(shù)據(jù),令每一個細胞為生*/
for (j=0;j<100;j++) orgData[i][j]=1;
initgraph(&GraphDriver,&GraphMode,′′′′); /*初始化屏幕顯示*/
setcolor(WHITE);
rectangle(270,190,370,290); /*作顯示邊框*/
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |