
#include<iostream>
using namespace std;
#include<timeh>
#define M 70
#define N 20
void mShow(int a[N+2][M+2])
{ int i,j;
for ( i=0;i<N;i++,cout<<endl )
for ( j=0;j<M;j++ )
if ( a[i+1][j+1] ) cout<<'';
else cout<<'';
//cout<<( a[i+1][j+1] )(''):(' ');
}
int mJduge(int a[N+2][M+2])
{ int i,j,k,s,p[9],b[N][M];
for ( i=0;i<N;i++ )
{
p[0]=p[4]=p[5]=&a[i+1][1]; p[4]--; p[5]++; // 1 2 3
p[1]=p[2]=p[3]=p[0]-M-2; p[1]--; p[3]++; // 4 0 5
p[6]=p[7]=p[8]=p[0]+M+2; p[6]--; p[8]++; // 6 7 8
for ( j=0;j<M;j++ )
{ for ( k=1,s=0;k<9;k++ ) s+=(p[k]);
b[i][j]=p[0];
if ( s>=3 ) b[i][j]=1;
else if ( s<2 ) b[i][j]=0;
for ( k=0;k<9;k++ ) p[k]++;
}
}
for ( i=0,s=1;i<N;i++ ) for ( j=0;j<M;j++ ) { a[i+1][j+1]=b[i][j]; if ( b[i][j]==0 ) s=0; }
return s;
}
void main()
{
int a[N+2][M+2],b[N][M],p[9];
int t,i,j,k;
for ( i=0;i<N+2;i++ ) for ( j=0;j<M+2;j++ ) a[i][j]=0;
srand((unsigned int)time(NULL));
for ( i=0;i<N;i++ ) for ( j=0;j<M;j++ ) { k=rand()%100; a[i+1][j+1]=( k>=77 )(1):(0); }
cout<<"-------- T=0--------"<<endl; mShow(a);
k=0; t=0;
while ( !k )
{ k=mJduge(a); t++;
cout<<"-------- T="<<t<<" --------"<<endl; mShow(a);
}
}
a数组比实际要的数组大一圈,大出来的一圈永恒等于0,作为边界,省得计算8连通数据时数组越界
b数组用于计算本次的结果,计算完成后复制、覆盖a数组中间部分作为结果
主程序做直到所有空间都被活细胞占满情况停止
以下是设置M=10,N=5的测试部分结果
并不是,生命是有意义的,生命的存在需要有价值和意义,要向世界证明自己曾经来过,要在这世间留下自己曾经存在过的痕迹,不能庸庸碌碌一生。
生活的意义不仅是肉体的生存,更在于心灵的成长。成长的过程起起伏伏,不是金钱数字所能衡量,物质层面与精神层面基本没有什么线性相关。当一个人的人格堕落之时,也可能正是他财富快速增长之时 ;当一个人精神矍铄,同时财富也极其殷实;当一个人穷困潦倒,心情却恬淡寡欲。很难找出必然的规律或是那种符合健康标准。
- onShow 页面显示时触发
该函数需return一个Object
示例:
示例:
示例:
示例:
以上就是关于请高手用C++编写程序—生命游戏全部的内容,包括:请高手用C++编写程序—生命游戏、生命只是个程序没有意义吗、小程序生命周期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)