Hi!
My homework is to make a c program for game of life. I have made my code already, the problem is when i'm running the code the compiler doesn't display any error, but my code still doesn't work well. I have to print in the screen an initial generation coming from a textfile, from that initial generation, I have to calculate the next generation using the rules of the game. After calculating the next generation I should save it from another textfile.
Rules of the game:
1. An organism will survive if it has exactly 2 or 3 neighbors.
2. An organism will die if it has less than 2 or more than 3 neighbors.
3. An organism will be born if it has exactly 3 neighbors.

I think I applied the rules of the game well, however I have no idea why my code still can not calculate the next generation.

I hope you guys could help me.. Thanks a lot!! by the way my board is a 25x25 matrix of the character 'X' and ' '. 'X' corresponds to a living organism.

``````#include <stdio.h>

char initial ;
char generation1 ;

int counting_neighbors (int i, int j)	{

int neighborscount;
neighborscount=0;

if (initial [i][j+1]=='X')
neighborscount ++;
if (initial [i][j-1]=='X')
neighborscount ++;
if (initial [i-1][j]=='X')
neighborscount ++;
if (initial [i-1][j+1]=='X')
neighborscount ++;
if (initial [i-1][j-1]=='X')
neighborscount ++;
if (initial [i+1][j]=='X')
neighborscount ++;
if (initial [i+1][j+1]=='X')
neighborscount ++;
if (initial [i+1][j-1]=='X')
neighborscount ++;

return neighborscount;
}

int main()	{

int i, j;
int neighbors;
char filename, initialgen;
char *g;
FILE *fp1;

printf ("Enter filename of initial generation: ");
scanf ("%s", filename);

fp1=fopen(filename, "r");

i=0;
j=0;
do {
g = fgets (initialgen, 26, fp1);
for(j=0;j<26;j++){
initial [i][j]=g[j];
}
i++;
if (g!=NULL)
printf ("%s", initialgen);
}
while (g != NULL);
fclose (fp1);
printf ("\n");

neighbors=0;

for(i=0;i<25;i++) {
for(j=0;j<26;j++)
{
neighbors=counting_neighbors(i,j);

if (initial [i][j]=='X') {
if (neighbors==3)
generation1 [i][j]='X';
else
generation1 [i][j]=' ';
if (neighbors==2)
generation1 [i][j]='X';
else
generation1 [i][j]=' ';
}
if(initial [i][j]==' ') {
if (neighbors==3)
generation1 [i][j]='X';
else
generation1 [i][j]=' ';
}
}
}

fp1=fopen ("gen1.txt", "w");
if (fp1!=NULL) {
for(i=0;i<25;i++) {
for(j=0;j<26;j++) {
fprintf (fp1, "%c", generation1 [i][j]);
}
fprintf (fp1, "\n");
}
}
fclose(fp1);

printf ("Generation1:");

for(i=0;i<25;i++) {
for(j=0;j<26;j++) {
printf ("%c", generation1 [i][j]);
} printf ("\n");
}

return 0;
}``````
``````#include <stdio.h>

char initial ;
char generation1 ;

int counting_neighbors (int i, int j)	{

int neighborscount;
neighborscount=0;

if (initial [i][j+1]=='X')
neighborscount ++;
if (initial [i][j-1]=='X')
neighborscount ++;
if (initial [i-1][j]=='X')
neighborscount ++;
if (initial [i-1][j+1]=='X')
neighborscount ++;
if (initial [i-1][j-1]=='X')
neighborscount ++;
if (initial [i+1][j]=='X')
neighborscount ++;
if (initial [i+1][j+1]=='X')
neighborscount ++;
if (initial [i+1][j-1]=='X')
neighborscount ++;

return neighborscount;
}

int main()	{

int i, j;
int neighbors;
char filename, initialgen;
char *g;
FILE *fp1;

printf ("Enter filename of initial generation: ");
scanf ("%s", filename);

fp1=fopen(filename, "r");

i=0;
j=0;
do {
g = fgets (initialgen, 26, fp1);
for(j=0;j<26;j++){
initial [i][j]=g[j];
}
i++;
if (g!=NULL)
printf ("%s", initialgen);
}
while (g != NULL);
fclose (fp1);
printf ("\n");

neighbors=0;

for(i=0;i<25;i++) {
for(j=0;j<26;j++){
neighbors=counting_neighbors(i,j);

if (initial [i][j]=='X') {
if (neighbors==3)
generation1 [i][j]='X';
else
generation1 [i][j]=' ';
if (neighbors==2)
generation1 [i][j]='X';
else
generation1 [i][j]=' ';
}
if(initial [i][j]==' ') {
if (neighbors==3)
generation1 [i][j]='X';
else
generation1 [i][j]=' ';
}
}
}
fp1=fopen ("gen1.txt", "w");
if (fp1!=NULL) {
for(i=0;i<25;i++) {
for(j=0;j<26;j++){
fprintf (fp1, "%c", generation1 [i][j]);
}
fprintf (fp1, "\n");
}
}
fclose(fp1);

printf ("Generation1:");

for(i=0;i<25;i++) {
for(j=0;j<26;j++) {
printf ("%c", generation1 [i][j]);
} printf ("\n");
}

return 0;
}``````
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.