本世紀70年代,人們曾瘋魔一種被稱作「生命遊戲」的小遊戲,這種遊戲相當簡單。假設有乙個像棋盤一樣的方格網,每個方格中放置乙個生命細胞,生命細胞只有兩種狀態:「生」或「死」。遊戲規則如下:
1. 如果乙個細胞周圍有3個細胞為生(乙個細胞周圍共有8個細胞),則該細胞為生,即該細胞若原先為死,則轉為生,若原先為生,則保持不變;
2. 如果乙個細胞周圍有2個細胞為生,則該細胞的生死狀態保持不變;
3. 在其它情況下,該細胞為死,即該細胞若原先為生,則轉為死,若原先為死,則保持不變設定影象中每個畫素的初始狀態後依據上述的遊戲規則演繹生命的變化,由於初始狀態和迭代次數不同,將會得到令人嘆服的優美圖案。
程式的演算法:
設定兩個二維陣列,乙個用於表示當前生命細胞的狀態,另乙個用於判斷當前的細胞的下乙個狀態。
這個程式還能統計當前活著的細胞的個數:
程式如下:
/*lifegame.c*/
#include
#include
#include
#include
#define max 60
#define size 5
void initg(); /*圖形模式初始化*/
void closeg();/*關閉圖形模式*/
void live(int col,int row);
void death(int col,int row);
void initg()
void closeg()
void live(int col,int row)
void death(int col,int row)
void table()
}void game()
for(i=0;i<=100;i++)
table();
delay(5000);
for(nrow=1;nrow for(ncol=1;ncol switch((ori[nrow-1][ncol-1]+ori[nrow-1][ncol]+ori[nrow-1][ncol+1] +ori[nrow][ncol-1]+ori[nrow][ncol+1] +ori[nrow+1][ncol-1]+ori[nrow+1][ncol]+ori[nrow+1][ncol+1])) /*end switch*/ for(nrow=1;nrow!=max;nrow++) for(ncol=1;ncol!=max;ncol++) ori[nrow][ncol]=resdata[nrow][ncol]; sprintf(str,"%d",count); setcolor(red); rectangle(450,30,getmaxx(),200); settextstyle(1,0,4); outtextxy(455,40,"life game"); outtextxy(455,100,"live:"); setfillstyle(solid_fill,black); bar(550,100,getmaxx()-5,140); outtextxy(550,100,str); } /*end time for*/ }void main() {initg(); game(); getch(); closeg(); 本世紀70年代,人們曾瘋魔一種被稱作 生命遊戲 的小遊戲,這種遊戲相當簡單。假設有乙個像棋盤一樣的方格網,每個方格中放置乙個生命細胞,生命細胞只有兩種狀態 生 或 死 遊戲規則如下 1 如果乙個細胞周圍有3個細胞為生 乙個細胞周圍共有8個細胞 則該細胞為生,即該細胞若原先為死,則轉為生,若原先為生,... 什麼是生命遊戲呢?遊戲開始時,每個細胞隨機地設定為 生 或 死 之一的某個狀態。然後,根據某種規則,計算出下一代每個細胞的狀態,畫出下一代細胞的生死分布圖。應該規定什麼樣的迭代規則呢?需要乙個簡單的,但又反映生命之間既協同又競爭的生存定律。為簡單起見,最基本的考慮是假設每乙個細胞都遵循完全一樣的生存... game.h define crt secure no warnings 1 include include include include define sum 10 define row 11 define col 11 void print void init char mine row co...生命遊戲 c語言實現
生命遊戲 c語言小實現
C語言實現掃雷遊戲