C++ 实现“生命游戏“

生命游戏是著名数学家康威发明的游戏

一.规则

初始时,有一些细胞,有些活着(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:刷新游戏

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值