生命游戏是著名数学家康威发明的游戏
一.规则
初始时,有一些细胞,有些活着(white);有些则是死的(black)
若一活细胞边有2-3个活细胞,它会保持存活
若一活细胞边有<2或>3个活细胞,它会因孤独或拥挤而死亡
若一死细胞边有3个活细胞,它会复活
二.头文件
1.<iostream>
2.<cstdio>
3.<string>
4.<windows.h>
5.<cstdlib>
6.<ctime>
三.代码
#include <iostream>
#include <cstdio>
#include <string>
#include <windows.h>
#include <cstdlib>
#include <ctime>
using namespace std;
struct Block{
int friends;
bool life,have;
};
Block blocks[21][21];
int look(int a,int b){
int c=0;
if(blocks[a-1][b-1].life==true) c++;
if(blocks[a][b-1].life==true) c++;
if(blocks[a+1][b-1].life==true) c++;
if(blocks[a-1][b].life==true) c++;
if(blocks[a+1][b].life==true) c++;
if(blocks[a-1][b+1].life==true) c++;
if(blocks[a][b+1].life==true) c++;
if(blocks[a+1][b+1].life==true) c++;
return c;
}
int main(){
srand(int(time(NULL)));
for(int i=1;i<=20;i++){
for(int j=1;j<=20;j++){
int r=rand()%150+1;
if(r<=50) blocks[i][j].life=true;
else blocks[i][j].life=false;
}
}
while(true){
for(int i=1;i<=20;i++){
for(int j=1;j<=20;j++){
if(blocks[i][j].life==true){
cout<<"□";
blocks[i][j].friends=look(i,j);
if(blocks[i][j].friends>3 or blocks[i][j].friends<2) blocks[i][j].have=false;
}
else{
cout<<" ";
blocks[i][j].friends=look(i,j);
if(blocks[i][j].friends==3) blocks[i][j].have=true;
}
}
cout<<endl;
}
system("cls");
for(int i=1;i<=20;i++){
for(int j=1;j<=20;j++){
blocks[i][j].life=blocks[i][j].have;
}
}
}
return 0;
}
四.代码解释
Line1-6:头文件
Line7:命名空间
Line8-12:创建自定义数据类型并创建表格
Line13-24:"察看"函数
Line26-33:随机细胞
Line34-56:进行游戏
Line35-49:判定并输出
Line50-55:刷新游戏