c语言 细胞自动机(生命游戏)代码

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>


int main(){
	int i, j, k = 0, cal = 0, c=0;
	char map[57][75];
	int l1[2000],r1[2000],l2[2000],r2[2000];
	FILE *fl;
	char test[5];

	srand((unsigned int)time(NULL));
	for (i=0;i<57;i++){
		for (j=0;j<75;j++){
			map[i][j] = ' ';
		}
	}
	map[30][30] = '*';
	map[31][29] = '*';map[31][31] = '*';
	map[32][28] = '*';map[32][32] = '*';
	map[33][28] = '*';map[33][32] = '*';
	map[34][28] = '*';map[34][32] = '*';
	map[35][28] = '*';map[35][32] = '*';
	map[36][29] = '*';map[36][31] = '*';
	map[37][30] = '*';
	/*
	map[30][34] = '*';
	map[30][37] = '*';

	map[31][33] = '*';

	map[32][33] = '*';
	map[32][37] = '*';

	map[33][33] = '*';
	map[33][34] = '*';
	map[33][35] = '*';
	map[33][36] = '*';*/

	fl=fopen("re.txt","w");
	
	for (i=0;i<57;i++){
		for (j=0;j<75;j++){
			printf("%c",map[i][j]);
		}
		printf("\n");
	}
	Sleep(5000);
	system("cls");
	while(c<2000){
		for (i=0;i<57;i++){
			for (j=0;j<75;j++){
				if (map[i][j] == ' ' && (map[i-1][j-1] + map[i-1][j] + map[i-1][j+1] + map[i][j-1] + map[i][j+1] + map[i+1][j-1] + map[i+1][j] + map[i+1][j+1]) == 286){
//					map[i][j] = '*';
					l1[k] = i;
					r1[k] = j;
					k++;
				}
				if (map[i][j] == '*' && (map[i-1][j-1] + map[i-1][j] + map[i-1][j+1] + map[i][j-1] + map[i][j+1] + map[i+1][j-1] + map[i+1][j] + map[i+1][j+1]) <= 266){
//					map[i][j] = ' ';
					l2[cal] = i;
					r2[cal] = j;
					cal++;
				}
				if (map[i][j] == '*' && (map[i-1][j-1] + map[i-1][j] + map[i-1][j+1] + map[i][j-1] + map[i][j+1] + map[i+1][j-1] + map[i+1][j] + map[i+1][j+1]) >= 296){
//					map[i][j] = ' ';
					l2[cal] = i;
					r2[cal] = j;
					cal++;
				}
			}
		}

		for (i=0;i<k;i++){
			map[l1[i]][r1[i]] = '*';
		}

		for (i=0;i<cal;i++){
			map[l2[i]][r2[i]] = ' ';
		}
		k = 0;
		cal = 0;
		for (i=0;i<3;i++){
//			map[rand()%57][(rand()/3)%75] = '*';
		}
		for (i=0;i<57;i++){
			for (j=0;j<75;j++){
				if(map[i][j] == '*'){cal++;}
				printf("%c",map[i][j]);
			}
			printf("\n");
		}
		fputs(itoa(cal,test,10),fl);
		fputs(" ",fl);
		if (c%10 == 9){fprintf(fl,"\n");}
		cal = 0;
		c++;
		Sleep(1000);
		system("cls");
	}
	fclose(fl);
//	printf(",:32 %d  *:42 %d",' ','*');

}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值