📄 celle2.c
字号:
/*****************************************************/
/*****************************************************/
/*****************************************************/
/*****************************************************/
/*****************************************************/
/*****************************************************/
/****以不同颜色表示不同状态细胞的细菌分裂试验*****/
#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(12);
x1=(x-1)*5,y1=(y-1)*5,x2=x1+2,y2=y1+2;
setfillstyle(1,12);
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)*5,y1=(y-1)*5,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(9); /* 用深蓝色画出该细胞 */
x1=(x-1)*5,y1=(y-1)*5,x2=x1+2,y2=y1+2;
setfillstyle(1,9);
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]>8)
{a[x][y-1]=1;
x1=(x-1)*5,y1=(y-2)*5,x2=x1+2,y2=y1+2;
setfillstyle(1,12);
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]>8)
{a[x][y+1]=1;
x1=(x-1)*5,y1=(y)*5,x2=x1+2,y2=y1+2;
setfillstyle(1,12);
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]>8)
{a[x+1][y]=1;
x1=(x)*5,y1=(y-2)*5,x2=x1+2,y2=y1+2;
setfillstyle(1,12);
bar(x1,y1,x2,y2); /*在该方格内画淡红色实心方块*/
f=0;
b[x][y]=1; /*该细胞该细胞分裂后资源值变为1*/
}
if(a[x-1][y]==0&&f==1&&b[x][y]>8)
{a[x-1][y]=1;
x1=(x)*5,y1=(y-2)*5,x2=x1+2,y2=y1+2;
setfillstyle(1,12);
bar(x1,y1,x2,y2); /*在该方格内画淡红色实心方块*/
b[x][y]=1; /*该细胞该细胞分裂后资源值变为1*/
}
/****************************/
}
if(a[x][y]==0) /*如果该处没有生命*/
{
setcolor(0);
x1=(x-1)*5,y1=(y-1)*5,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 + -