C++:ライフゲーム(細胞群進化のシミュレーション)


生命ゲームはイギリスのケンブリッジ大学の数学者John Conwayが提出したもので、ゲームのルールはこのようにして、1つのM*N碁盤の上で、1格ごとに2つの状態しかなくて、“生”と“死”、それぞれ1つの生命の駒に占有されるかどうかを表します.各四角い格子には8つの隣接格子があり、ゲームのルールは以下の通りです.
a)「生」の状態にある格について、8人の隣人のうち現在2人または3人の「生命」がある場合、生存状態を維持し続け、そうでない場合、次の状態では、孤独や混雑によって死亡する.
b)「死」状態にあるスペースについて、8つの隣接格のうち3つの「生命」がある場合、その格は次の状態で「生命」(繁殖過程を表す)に変化し、そうでなければ空になる. 
ゲーム中のすべての生命駒は,上記で定めた局所ルールに従って同期更新され,世代ごとに繁殖が行われている.
C++で模倣する
#include
#include
#include
#include
using namespace std;

void init();
void printArea();
void evol();
int surroundingLifeCount(int y, int x);

bool** cells;
int lenArea;
int amount;

int main(void) {
	cout << "      : ";
	cin >> lenArea; 
	cells = new bool*[lenArea];
	for(int i=0;i> amount;
	init();
	while(true) {
		system("cls");
		printArea();
		evol();
		sleep(1);
	}
}

void init() {
	srand(time(NULL));
	for(int i=0;i3) cells[i][j] = false;
			if(cells[i][j]==false && lifeCount==3) cells[i][j] = true;
		}
	}
}

int surroundingLifeCount(int y, int x) {
	int curY, curX;
	int lifeCount = 0;
	for(curY=y-1;curY<=y+1;curY++)
		for(curX=x-1;curX<=x+1;curX++)
			if( !(curX==x&&curY==y) && curY>=0 && curY=0 && curX