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