人生ゲームをプログラミングしようとしています。世代を反復しようとすると、ゴミになってしまいます。かなりの数のことを試しましたが、エラーは表示されませんが、明らかにエラーがあります。どんな助けでも大歓迎です。ゲームのロジックを古い配列に適用して新しい配列を作成しようとすると、何か間違っていることはほぼ確実ですが、何がわからないのですか。これは 4 つの機能の 1 つで、他の機能もテストしましたが、この機能に欠陥があると確信しています。最終的な目標は、世代ごとに必要に応じてゲームを拡張および縮小することです。
void iterateGeneration ()
{
ifstream fin;
fin.open("tmp.txt");
ofstream fout;
char **arr=new char * [ROWS];
for(int i=0; i<ROWS; i++)
arr[i] = new char [COLUMNS];
int lifecheck=0;
//read in current generation from tmp.txt
for(int i=0; i<ROWS; i++)
{
fin.getline(arr[i], COLUMNS);
}
fin.close();
char **new_arr=new char * [ROWS];
for(int i=0; i<ROWS; i++)
new_arr[i]= new char [COLUMNS];
//count live neighbors, then determine if cell will be alive next generation
for(int i=0; i<ROWS; i++)
{
for(int j=0; j<COLUMNS-1; j++)
{
lifecheck=0;
if((i==0 && j==0) || (i==0 && j==(COLUMNS-2)) || (i==(ROWS-1) && j==0) || (i==(ROWS-1) && j==(COLUMNS-2)))//corners always stay dead
{
lifecheck=0;
}
else if(i==0)//special check for first row, only three checks since neighbors in first row is always dead
{
if(arr[i+1][j-1]=='1')
lifecheck+=1;
if(arr[i+1][j]=='1')
lifecheck+=1;
if(arr[i+1][j+1]=='1')
lifecheck+=1;
}
else if(i==(ROWS-1))//special check for last row
{
if(arr[i-1][j-1]=='1')
lifecheck+=1;
if(arr[i-1][j]=='1')
lifecheck+=1;
if(arr[i-1][j+1]=='1')
lifecheck+=1;
}
else if(j==0)//special check for first column
{
if(arr[i-1][j+1]=='1')
lifecheck+=1;
if(arr[i][j+1]=='1')
lifecheck+=1;
if(arr[i+1][j+1]=='1')
lifecheck+=1;
}
else if(j==(COLUMNS-2))//special check for last column
{
if(arr[i-1][j-1]=='1')
lifecheck+=1;
if(arr[i][j-1]=='1')
lifecheck+=1;
if(arr[i+1][j-1]=='1')
lifecheck+=1;
}
else
{
if(arr[i-1][j-1]=='1')
lifecheck+=1;
if(arr[i-1][j]=='1')
lifecheck+=1;
if(arr[i-1][j+1]=='1')
lifecheck+=1;
if(arr[i][j-1]=='1')
lifecheck+=1;
if(arr[i][j+1]=='1')
lifecheck+=1;
if(arr[i+1][j-1]=='1')
lifecheck+=1;
if(arr[i+1][j]=='1')
lifecheck+=1;
if(arr[i+1][j+1]=='1')
lifecheck+=1;
}
if(arr[i][j]=='0')
{
if(lifecheck==3)
new_arr[i][j]=='1';
else
new_arr[i][j]=='0';
}
else if(arr[i][j]=='1')
{
if(lifecheck==2)
new_arr[i][j]=='1';
else if(lifecheck==3)
new_arr[i][j]=='1';
else
new_arr[i][j]=='0';
}
else
new_arr[i][j]=='0';
}//2nd for
}//1st for
fout.open("tmp.txt");
for(int i=0; i<ROWS; i++)
{
fout << new_arr[i];
fout << endl;
}
for(int p=0; p<ROWS; p++)
{
delete [] arr[p];
delete [] new_arr[p];
}
delete [] arr;
delete [] new_arr;
}
using namespace std;
const int NUM_GENERATIONS = 1; //set to a smaller number for debugging
int main()
{
populateWorld(FILE_NAME);
showWorld();
for (int iteration = 0; iteration < NUM_GENERATIONS; iteration++)
{
if (WINDOWS)
system("cls"); //Windows only
else
system("clear"); //Linux only
iterateGeneration();
showWorld();
}
if (WINDOWS)
system("PAUSE");
return 0;
}
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000010000000000000000000000000000000000000000000
0000000000000000000000000000001010000000000000000000000000000000000000000000
0000000000000000000011000000110000000000001100000000000000000000000000000000
0000000000000000000100010000110000000000001100000000000000000000000110000000
0000000011000000001000001000110000000000000000000000000000000000000110000000
0000000011000000001000101100001010000000000000000000000000000000000000000000
0000000000000000001000001000000010000000000000000000000000000000000000000000
0000000000000000000100010000000000000000000000000000000000000000000000000000
0000000000000000000011000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000001110000000
0000000000000000000000000000000000000000000000000000000000000000010001000000
0000000000000000000000000000000000000000000000000000000000000000100000100000
0000000000000000000000000000000000000000000000000000000000000000100000100000
0000000000000000000000000000000000000000000000000000000000000000000100000000
0000000000000000000000000000000000000000000000000000000000000000010001000000
0000000000000000000000000000000000000000000000000000000000000000001110000000
0000011000000000000000111000000000000000000000000000000000000000000100000000
0000011000000000000000101000000000000000000000000000000000000000000000000000
0000000000000000000000110000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000011100000
0000000000000000000000000000000000000000000000000000000000000000000011100000
0000000000000000000000000000000000000000000000000000000000000000000100010000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000001100011000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0001100011000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000100010000000000000000000000000000000000000000000000000000000000000000000
0000011100000000000000000000000000000000000000000000000000000000000000000000
0000011100000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000110000000000000000000000
0000000000000000000000000000000000000000000000000001010000000000000001100000
0000000010000000000000000000000000000000000000000001110000000000000001100000
0000000111000000000000000000000000000000000000000000000000000000000000000000
0000001000100000000000000000000000000000000000000000000000000000000000000000
0000000010000000000000000000000000000000000000000000000000000000000000000000
0000010000010000000000000000000000000000000000000000000000000000000000000000
0000010000010000000000000000000000000000000000000000000000000000000000000000
0000001000100000000000000000000000000000000000000000000000000000000000000000
0000000111000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000001100000000000000000000
0000000000000000000000000000000000000000000000000000100010000000000000000000
0000000000000000000000000000000000000000000100000001000001000000001100000000
0000000000000000000000000000000000000000000101000011010001000000001100000000
0000000110000000000000000000000011000000000000110001000001000000000000000000
0000000110000000000000000000000011000000000000110000100010000000000000000000
0000000000000000000000000000000000000000000000110000001100000000000000000000
0000000000000000000000000000000000000000000101000000000000000000000000000000
0000000000000000000000000000000000000000000100000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00`ó!#\00\00 \00\00
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000000000
00000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000
00000000000000000000000000000010
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000110000001100000000000011000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000001100000000000011000000000000000000000001
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000000110000000
00000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000
00000000000000000010000010
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000001000100000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000110000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000000000000000000000
00
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000
00000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000
00000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000100010000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000100000100000
00000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000100000
00000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000011
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000000100000000
00000110
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000
00000000000000000000001100
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000000000000100010000
00
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000
00000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\001000
00000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000000000
00000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000
00001000100000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0011000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000110000000000000000000000
00000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000001100000
00000000100000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000001110000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000000000000000000000
00
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000
00000100000100000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000
00000010001000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000000000
00000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000
00000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000001000100000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000100000001000001000000001100000000
00000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000001100000000
00000001100000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000001100000000000000000000000110000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\0000000000000000000000000000001100000011000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000101000000000000000000000000000000
00
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000000000000000000000
00000000000000000000
x"#\00\00x"#\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\000000