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);

}

}

相关内容

热门资讯

“六一”亲子游热度飙升,成年子... “六一”国际儿童节即将来临,不少家庭游客已提前预订亲子旅游产品,根据同程旅行、去哪儿、途牛等OTA(...
柯尔鸭花车、科学魔法秀、卡皮巴... 华声在线5月28日讯(全媒体记者 曾冠霖)六一儿童节临近,长沙亲子游市场持续升温。5月28日,记者从...
“六一”儿童节去哪玩?广西各大... “六一”国际儿童节临近,广西各大景区、场馆推出门票优惠与丰富的亲子活动,涵盖山水休闲、萌宠互动、非遗...
旅行社责任险报价:一年几千元,... 旅行社问责任险报价时,很多人第一反应是:"一年多少钱?最低能做到多少?"但在保游网看来,旅行社责任险...