📄 johnconway.c
字号:
/* Demo of John Conway life game. * * Written by Cyril Hu (cyrilhu@gmail.com), public domain. */#include<stdio.h>#include<stdlib.h>#include<time.h>#define Z 20#define X 10#define Y 10int life[Z][X][Y];int alive(int k, int i, int j, int t1, int t2, int t3, int t4);int main(void){ int *p,k,i,j,t1,t2,t3,t4; srand(time(NULL)); for(p=life[0][0]; p<life[0][0]+X*Y*Z; p++) *p = (int)(2.0 * rand()/(1.0+RAND_MAX)); for(k=0; k<Z; k++) for(i=0; i<X; i++) for(j=0; j<Y; j++) { t1=i-1, t2=j-1, t3=i+1, t4=j+1; if(i==0) t1=i; if(i==X-1) t3=i; if(j==0) t2=j; if(j==Y-1) t4=j; if(life[k][i][j]==0 && alive(k,i,j,t1,t2,t3,t4)==3) life[k][i][j]=1; if((life[k][i][j]==1) && (alive(k,i,j,t1,t2,t3,t4)==2 || alive(k,i,j,t1,t2,t3,t4)==3) && k != Z-1 ) life[k+1][i][j]=1; if((life[k][i][j]==1) && (alive(k,i,j,t1,t2,t3,t4)<2 || alive(k,i,j,t1,t2,t3,t4)>3)) life[k][i][j]=0; } for(k=0; k<Z; k++) { printf("\n\nGeneration %d\n", k+1); for(i=0; i<X; i++) { for(j=0; j<Y; j++) printf("%d ",life[k][i][j]); puts(""); } } return EXIT_SUCCESS;}int alive(int k, int i, int j, int t1, int t2, int t3, int t4){ int cnt=0; if(life[k][t1][t2]) cnt++; if(life[k][t1][j]) cnt++; if(life[k][t1][t4]) cnt++; if(life[k][i][t2]) cnt++; if(life[k][i][t4]) cnt++; if(life[k][t3][t2]) cnt++; if(life[k][t3][j]) cnt++; if(life[k][t3][t4]) cnt++; return cnt;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -