C++ 实现生命游戏 Live Game
admin
2024-05-24 00:08:53

#include"stdlib.h"

#include"time.h"

#include"unistd.h"

using namespace std;

#define XSIZE 80

#define YSIZE 30

#include"iostream"

using namespace std ;

// 初始化生命

void initLive(int a[YSIZE][XSIZE])

{

// 初始化边界

for(int i=0;i

{

a[i][0]=0;

a[i][XSIZE-1]=0;

}

for(int i=0;i

{

a[0][i]=0;

a[YSIZE-1][i]=0;

}

for(int i=1;i

{

for(int j=1;j

{

a[i][j]=rand()%2;

}

}

}

// 清空

void clear(int a[YSIZE][XSIZE])

{

for(int i=0;i

{

for(int j=0;j

{

a[i][j]=0;

}

}

}

// 监测8个方格

int getSum(int a[YSIZE][XSIZE],int y,int x)

{

int sum=0;

sum+=a[y+1][x];

sum+=a[y-1][x];

sum+=a[y][x+1];

sum+=a[y][x-1];

sum+=a[y+1][x+1];

sum+=a[y-1][x+1];

sum+=a[y+1][x-1];

sum+=a[y-1][x-1];

return sum;

}

// 从a状态生成到b中

void nextStatus(int b[YSIZE][XSIZE],int a[YSIZE][XSIZE])

{

int sum=0;

for(int i=1;i

{

for(int j=1;j

{

sum=getSum(a,i,j);

// 测试四种状态

if(a[i][j]==0 and sum==3)

{

b[i][j]=1;

}

else if(a[i][j]==1 and sum<2)

{

b[i][j]=0;

}else if(a[i][j]==1 and sum>3)

{

b[i][j]=0;

}

else if(a[i][j]==1 and (sum==2 or sum==3))

{

b[i][j]=1;

}

}

}

}

// 打印

void printer(int a[YSIZE][XSIZE])

{

for(int i=0;i

cout<<"--";

cout<

for(int i=0;i

{

for(int j=0;j

{

if(a[i][j]>0)

{

cout<<"国";

}

else

{

cout<<" ";

}

}

cout<

}

// usleep(1000000);

usleep(100000);

}

int main(){

// 设置随机种子

srand(time(NULL));

int a[YSIZE][XSIZE];

int b[YSIZE][XSIZE];

initLive(a);

clear(b);

while (true)

{

// 生成下一种状态

nextStatus(b,a);

// 打印状态

printer(b);

// 清空上一次的状态

clear(a);

nextStatus(a,b);

printer(a);

clear(b);

}

}

相关内容

热门资讯

谁说西北只有荒漠?青海海西为你... 本文转自:人民网-青海频道谁说西北只有荒漠?青海省海西蒙古族藏族自治州早就悄悄集齐了雪山、盐湖、草原...
旅行真谛:深度感受与融入,提前... 旅程并非仅仅是地理位置上的挪动,更是心灵跟自然之间的深度交谈,于探寻世界的进程当中,我们既可领会大自...
景区酒店的 “营收分水岭”:有... 在文旅消费升级的当下,景区酒店的竞争早已跳出 “住宿” 本质,转向 “体验型消费” 的较量。而伊贝莎...
保游网黄钦:以超1000款产品... 11月20日,深圳湾万丽酒店,2025选地接旅游资源交易展·深圳站在此举行,汇聚全球超100家新旅游...
游历:探寻世界与充实人生的渠道... 游历属于探寻世界的办法,同样是充实人生经历的渠道。由雄伟山川直至人文景致,每一处景致都负载着独有的故...