易码技术论坛

 找回密码
 加入易码
搜索
查看: 96805|回复: 2

[推荐][源程序][生命游戏]

[复制链接]
发表于 2005-11-24 17:58:00 | 显示全部楼层
二维元胞自动机的一种。。。
发表于 2005-11-24 18:50:00 | 显示全部楼层
有难度
 楼主| 发表于 2005-11-24 17:48:35 | 显示全部楼层 |阅读模式
[申明]本帖转载,并非原创

有兴趣的朋友可以写一下

用TC2.0编写

     #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[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[j]=resData[j];
   getch();
     }
   }







您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-6-16 22:17 , Processed in 0.010339 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表