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;}      /* 则该处也不存在细胞 */ 
 
 
} 
} 
} 
} 
}