C言語でLifeGameを作ろうと思い、テストとしてこのプログラムを作成したのですが、なぜ正常に動かないのか理由がわかりません。
環境はWin7 U 64bit,Microsoft VisualC++です。
よろしくお願いします。
Lifegameというのは下記のルールで成り立つ人工生命のシュミレーションです
1つのセルはその周囲に8つのセルと接している。
A:あるセルがチェス盤上で生きているとき
1:周囲の8セルの内、2または3個生きている場合、次の時間ステップ(世代)で生き残る。
2:周囲の8セルの内、4つ以上生きている場合、人口過剰で死ぐ。
3:周囲の8セルの内、生きているのが1つ以下では、露出しすぎで死ぐ。
B:あるセルがチェス盤上で死んでいるとき
1:周囲の8セルの内、ちょうど生きたセルが3つの時誕生するが、そのほかの場合は死んだまま。
int a[8][8] = {
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,1,1,0,0,0},
{0,0,0,1,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}
};
int b[8][8];
int cheak(int x, int y)
{
if (a[x+1][y+1] + a[x+1][y] + a[x+11][y-1]
+ a[x][y+1] + a[x][y-1]
+ a[x-1][y+1] + a[x-1][y] + a[x-1][y-1]
== 3){
return 1;
}
else if (a[x+1][y+1] + a[x+1][y] + a[x+11][y-1]
+ a[x][y+1] + a[x][y-1]
+ a[x-1][y+1] + a[x-1][y] + a[x-1][y-1]
== 2){
return a[x][y];
}
else{
return 0;
}
}
int main(void)
{
int x;
int y;
int c;
for(c = 0; c <= 2; c++){
for (x = 0; x <= 7; x++){
for (y = 0; y <= 7; y++){
printf("%d ",a[x][y]);
}
printf("\n");
}
for (x = 1; x <= 6; x++){
for (y = 1; y <= 6; y++){
b[x][y] = cheak(x,y);
}
}
for (x = 0; x <= 7; x++){
for (y = 0; y <= 7; y++){
a[x][y] = b[x][y];
}
}
printf("\n");
}
return 0;
}