www.pudn.com > celle1.rar > celle1.c
/*****************************************************/ /*****************************************************/ /*****************************************************/ /****-----单色10000个空间位置的细菌分裂试验------*****/ #include#include main() { int x,y,a[100][100],b[100][100],x1,y1,x2,y2,c,d,e,f; int graphdriver=DETECT,graphmode; initgraph(&graphdriver,&graphmode,"//tc"); setviewport(480,0,630,480,1); rectangle(493,11,635,288); settextstyle(2,0,6); setcolor(9); outtextxy(500,100,"MAN MADE LIFE"); setcolor(14); outtextxy(511,150,"LTL PM EE"); outtextxy(511,200,"2001---2006 CHINA"); setviewport(0,0,480,480,1); for(x=0;x<=100;x++) { for(y=0;y<=100;y++) /*对所有的细胞位置设置为无*/ { a[x][y]=0; } } for(x=0;x<=100;x++) { for(y=0;y<=100;y++) /*对所有的细胞占有资源设置为无*/ { b[x][y]=0; } } a[22][27]=1; a[3][11]=22; a[43][2]=8; for(;;) { for(x=1;x<=99;x++) { for(y=1;y<=99;y++) /*判断该点处的细胞是不是活的*/ { if(a[x][y]!=0) /*如果是活的*/ {/******************用不同颜色的方格表示不同状态的细胞********************/ if(a[x][y]>=1&&a[x][y]<4) /* 如果该细胞年龄小于4 */ {setcolor(2); x1=(x-1)*2,y1=(y-1)*2,x2=x1+2,y2=y1+2; setfillstyle(1,2); bar(x1,y1,x2,y2); /*在该方格内画淡红色实心方块*/ a[x][y]=a[x][y]+1; /*该细胞的生命周期加1*/ b[x][y]=b[x][y]+1; /*该细胞吸收积累的资源值加1*/ /*****************************************************/ } if(a[x][y]>=4&&a[x][y]<90) /* 如果该细胞年龄大于4,小于25 */ {setcolor(2); /* 用绿色画出该细胞 */ x1=(x-1)*2,y1=(y-1)*2,x2=x1+2,y2=y1+2; setfillstyle(1,2); bar(x1,y1,x2,y2); /*在该方格内画绿色实心方块*/ a[x][y]=a[x][y]+1; b[x][y]=b[x][y]+1; /*该细胞吸收积累的资源值加1*/ } /****************************************************/ if(a[x][y]>=90) /* 如果该细胞年龄大于25 */ {setcolor(2); /* 用深蓝色画出该细胞 */ x1=(x-1)*2,y1=(y-1)*2,x2=x1+2,y2=y1+2; setfillstyle(1,2); bar(x1,y1,x2,y2); /*在该方格内画深蓝色实心方块*/ /*********************************************************************/ a[x][y]=a[x][y]+1; /*该细胞的生命周期加1*/ b[x][y]=b[x][y]+1; /*该细胞吸收积累的资源值加1*/ if(a[x][y]>=100) {a[x][y]=0;b[x][y]=0; } /* 如果该细胞年龄大于30,该细胞死亡 */ } /****************************************************************/ /****************************************************************/ if(a[x][y-1]>3&&a[x][y+1]>3&&a[x-1][y]>3&&a[x+1][y]>3) /*如果周围细胞都存在,则该处不诞生新细胞*/ {a[x][y]=0; b[x][y]=0; /*该细胞不存在,该细胞不占有资源*/} /****************************/ c=rand(); e=c%2; f=1; if(a[x][y-1]==0&&e==1&&f==1&&b[x][y]>3) {a[x][y-1]=1; x1=(x-1)*2,y1=(y-1)*2,x2=x1+2,y2=y1+2; setfillstyle(1,2); bar(x1,y1,x2,y2); /*在该方格内画淡红色实心方块*/ f=0; b[x][y]=1; /*该细胞该细胞分裂后资源值变为1*/ } c=rand(); e=c%2; if(a[x][y+1]==0&&e==1&&f==1&&b[x][y]>3) {a[x][y+1]=1; x1=(x-1)*2,y1=(y-1)*2,x2=x1+2,y2=y1+2; setfillstyle(1,2); bar(x1,y1,x2,y2); /*在该方格内画淡红色实心方块*/ f=0; b[x][y]=1; /*该细胞该细胞分裂后资源值变为1*/ } c=rand(); e=c%2; if(a[x+1][y]==0&&e==1&&f==1&&b[x][y]>3) {a[x+1][y]=1; x1=(x-1)*2,y1=(y-1)*2,x2=x1+2,y2=y1+2; setfillstyle(1,2); bar(x1,y1,x2,y2); /*在该方格内画淡红色实心方块*/ f=0; b[x][y]=1; /*该细胞该细胞分裂后资源值变为1*/ } if(a[x-1][y]==0&&f==1&&b[x][y]>3) {a[x-1][y]=1; x1=(x)*2,y1=(y-2)*2,x2=x1+2,y2=y1+2; setfillstyle(1,2); bar(x1,y1,x2,y2); /*在该方格内画淡红色实心方块*/ b[x][y]=1; /*该细胞该细胞分裂后资源值变为1*/ } /****************************/ } if(a[x][y]==0) /*如果该处没有生命*/ { setcolor(0); x1=(x-1)*2,y1=(y-1)*2,x2=x1+2,y2=y1+2; setfillstyle(1,0); bar(x1,y1,x2,y2); /*在该方格内画黑色色实心方块*/ /************************************************************/ if(a[x][y-1]==0&&a[x][y+1]==0&&a[x-1][y]==0&&a[x+1][y]==0) /* 如果该方格周围不存在细胞 */ {a[x][y]=0;} /* 则该处也不存在细胞 */ } } } } }