生命游戏c语言源代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#include
#define hs 10 //这能改行数
#define ls 10 //这能改列数
#define tiaojian1 2 //这里可改周围几个细胞时存活
#define tiaojian2 3 //这里可改周围几个细胞时繁殖
int world[hs][ls];

void shuru(int[hs][ls]); //为数组赋初始值
void shuchu(int[hs][ls]); //提供输出
int huanjin(int,int); //计算周围细胞数
void jisuanweilai(int[hs][ls]); //计算未来
void chashou(int[hs][ls]); //运行后插手杀死或复活某些细胞

int main(void)
{
printf("生命游戏\n");
printf("默认世界大小10*10,世界大小及规则代码定义中可改\n");
printf("输入需要添加细胞的点的坐标,添加完成后输入一组负数坐标即可终止输入\n");
int i,j;
for(i=0;ifor(j=0;jworld[i][j]=0; //1为生0为死 归零
shuchu(world);
shuru(world);
shuchu(world);
system("pause");
while(1)
{
char i;
jisuanweilai(world);
shuchu(world);
printf("继续按回车,插手按a,终止按b\n");
i=getchar();
if(i=='\n') ;
else if(i=='a')
{
chashou(world);
shuchu(world);
system("pause");
}
else break;
}
system("pause");
return 0;
}

void shuru(int world[hs][ls])
{
int i,j;
while(1)
{
scanf("%d%d",&i,&j);
if(i<0||j<0) break; //任意为负终止输入
else if(i>=hs||j>=ls)
{
printf("输入数据超范围\n");
}
world[i][j]=1; //1为生0为死
}
}

void shuchu(int world[hs][ls])
{
int i,j,k=0;
for(i=0;i{
printf(" %d",i);
}
printf("\n");
printf(" ┌"); //第二行
for(i=0;i{
printf("─┬");
}
printf("─┐\n");
for(i=0;i{
printf("%d│",i);
for(j=0;j{
if(world[i][j]==1)
{
printf("●│");
k++;
}
else printf("○│");
}
printf("\n");
if(i==hs-1) break;
printf(" ├");
for(j=0;j{
printf("─┼");
}
printf("─┤\n");
}
printf(" └");
for(i=0;iprintf("─┴");
printf("─┘\n");
printf(" 现有%d个存活细胞\n",k);
}

int huanjin(int h,int l)
{
int sum=0,i,j;
for(i=h-1;i<=h+1;i++)
{
for(j=l-1;j<=l+1;j++)
{
if(i<0||i>=hs)
continue;
if(j<0||j>=ls)
continue;
if(i==h&&j==l)
continue;
if(world[i][j]==1)
sum++;
}


}
return sum;
}

void jisuanweilai(int world[hs][ls])
{
int i,j,k;
for(i=0;i{
for(j=0;j{
k=huanjin(i,j);
switch(k)
{
case tiaojian1: break;
case tiaojian2: world[i][j]=1;break;
default : world[i][j]=0;break;
}
}
}
}

void chashou(int world[hs][ls])
{
int i,j;
printf("加入要复活的细胞坐标,添加完成后输入一组负数坐标即可终止输入\n");
while(1)
{
scanf("%d%d",&i,&j);
if(i<0||j<0) break; //任意为负终止输入
else if(i>=hs||j>=ls)
{
printf("输入数据超范围\n");
}
world[i][j]=1; //1为生0为死
}
printf("加入要杀死的细胞坐标,添加完成后输入一组负数坐标即可终止输入\n");
while(1)
{
scanf("%d%d",&i,&j);
if(i<0||j<0) break; //任意为负终止输入
else if(i>=hs||j>=ls)
{
printf("输入数据超范围\n");
}
world[i][j]=0; //1为生0为死
}
}

相关文档
最新文档