明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

用c語言演繹“生命游戲”

[摘要]本世紀(jì)70年代,人們曾瘋魔一種被稱作“生命游戲”的小游戲,這種游戲相當(dāng)簡單。假設(shè)有一個像棋盤一樣的方格網(wǎng),每個方格中放置一個生命細(xì)胞,生命細(xì)胞只有兩種狀態(tài):“生”或“死”。游戲規(guī)則如下:  1. 如果一個細(xì)胞周圍有3個細(xì)胞為生(一個細(xì)胞周圍共有8個細(xì)胞),則該細(xì)胞為生,即該細(xì)胞若原先為死,則轉(zhuǎn)為生...
 本世紀(jì)70年代,人們曾瘋魔一種被稱作“生命游戲”的小游戲,這種游戲相當(dāng)簡單。假設(shè)有一個像棋盤一樣的方格網(wǎng),每個方格中放置一個生命細(xì)胞,生命細(xì)胞只有兩種狀態(tài):“生”或“死”。游戲規(guī)則如下:
  1. 如果一個細(xì)胞周圍有3個細(xì)胞為生(一個細(xì)胞周圍共有8個細(xì)胞),則該細(xì)胞為生,即該細(xì)胞若原先為死,則轉(zhuǎn)為生,若原先為生,則保持不變;
  2. 如果一個細(xì)胞周圍有2個細(xì)胞為生,則該細(xì)胞的生死狀態(tài)保持不變;
  3. 在其它情況下,該細(xì)胞為死,即該細(xì)胞若原先為生,則轉(zhuǎn)為死,若原先為死,則保持不變設(shè)定圖像中每個像素的初始狀態(tài)后依據(jù)上述的游戲規(guī)則演繹生命的變化,由于初始狀態(tài)和迭代次數(shù)不同,將會得到令人嘆服的優(yōu)美圖案。
  
#include <graphics.h>
  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ù),令每一個細(xì)胞為生*/
  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++){
 。嬎忝恳粋細(xì)胞周圍的活的細(xì)胞數(shù)*/
  nCount=orgData[nRows-1][nCols-1]+orgData[nRows-1][nCols]
 。玱rgData[nRows-1][nCols+1]+orgData[nRows][nCols-1]
 。玱rgData[nRows][nCols+1]+orgData[nRows+1][nCols-1]
 。玱rgData[nRows+1][nCols]+orgData[nRows+1][nCols+1];
  switch(nCount){
 。車3個活細(xì)胞,該細(xì)胞為生,在屏幕上用黑色像素表示*/
  case 3: putpixel(nCols+210,120+nRows,BLACK);
  resData[nRows][nCols]=1;break;
  /*周圍有2個活細(xì)胞,該細(xì)胞不變,在屏幕顯示也不變*/
  case 2: resData[nRows][nCols]=orgData[nRows][nCols];
  break;
 。渌闆r下,細(xì)胞為死,在屏幕上用白色像素表示*/
  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();
  }
  }