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

}

}

相关内容

热门资讯

山水皆有情!丽江两山一江的千年... 去过丽江、走过虎跳峡的人,大概率都听过哈巴雪山和金沙江的传说。很多人站在峡谷之下,望着奔腾不息的金沙...
活力中国调研行丨“殷”你而来 ... 9月12日,游客在殷墟博物馆“甲骨文展厅”内参观。位于河南省安阳市的殷墟博物馆新馆是首个全景式展现商...
浦江之夜赴美好相逢,第37届上... 9月12日晚,黄浦江畔灯火璀璨,第37届上海旅游节大巡游在外滩中山东一路上演。不少观众早早便来到外滩...
美丽中国丨秋韵紫鹊界 梯田入画... 这是9月11日拍摄的紫鹊界梯田(无人机照片)。 金秋九月,湖南省娄底市新化县紫鹊界梯田稻谷渐次成熟。...
中国之巅奏响《共同的节日》,千... 千吨阻尼器,“迎世赛、游上海旅游节”。9月13日,由上海市文化和旅游局指导推出上海旅游·会客│巅峰之...