⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 celle1.c

📁 用元胞自动机实现单色10000个空间位置的细菌分裂试验的算法C语言代码
💻 C
字号:
/*****************************************************/
/*****************************************************/
/*****************************************************/
/****-----单色10000个空间位置的细菌分裂试验------*****/

#include <stdio.h>
#include <graphics.h>

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


}
}
}
}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -