S
Ich habe es hinbekommen.
#include <stdio.h>
#define MATRIX_GROESSE 10
int weltkarte[2][MATRIX_GROESSE + 2][MATRIX_GROESSE + 2];
int diese_gen, letzte_gen;
int zaehle_gen = 0;
int init_world();
int next_gen();
int put_world();
int main()
{
printf("Das Spiel des Lebens\n\n");
init_world();
for (zaehle_gen=1; zaehle_gen <= 10; zaehle_gen++)
{
if (zaehle_gen % 2)
{
diese_gen = 1;
letzte_gen = 0;
} else {
diese_gen = 0;
letzte_gen = 1;
}
next_gen();
put_world();
printf("Bitte die \"Enter\" Taste druecken fuer das naechste Jahr");
getchar();
}
return (0);
}
int init_world()
{
int x,y;
printf("Bitte geben Sie die Koordinaten ein, an denen sich zu Beginn ein \n");
printf("Lebewesen befinden soll. (0 0 zum beenden der Eingabe verwenden)\n");
do
{
printf("\nx: ");
scanf("%d",&x);
printf("y: ");
scanf("%d",&y);
if (x && y) weltkarte[0][x][y] = 1;
}
while (x && y);
printf("\nFolgende Matrixwird erzeugt:\n");
put_world();
printf("Bitte druecken Sie die \"Enter\" Taste um sich die Entwicklung der ersten\n");
printf("10 Jahre zu betrachten");
getchar();
getchar();
return (0);
}
int num_neighbors(int x, int y)
{
int zaehler=0;
if (weltkarte[letzte_gen] [x-1] [y-1])
zaehler++;
if (weltkarte[letzte_gen] [x] [y-1])
zaehler++;
if (weltkarte[letzte_gen] [x+1] [y-1])
zaehler++;
if (weltkarte[letzte_gen] [x-1] [y])
zaehler++;
if (weltkarte[letzte_gen] [x+1] [y])
zaehler++;
if (weltkarte[letzte_gen] [x-1] [y+1])
zaehler++;
if (weltkarte[letzte_gen] [x] [y+1])
zaehler++;
if (weltkarte[letzte_gen] [x+1] [y+1])
zaehler++;
return zaehler;
}
int next_gen()
{
int x,y;
for (y=1; y <= MATRIX_GROESSE; y++)
{
for (x=1; x <= MATRIX_GROESSE; x++)
{
if (weltkarte[letzte_gen][x][y])
{
if ((num_neighbors(x,y) < 2) || (num_neighbors(x,y) > 3)) {
weltkarte[diese_gen][x][y] = 0;
} else {
weltkarte[diese_gen][x][y] = 1;
}
} else {
if (num_neighbors(x,y) == 3)
{
weltkarte[diese_gen][x][y] = 1;
} else {
weltkarte[diese_gen][x][y] = 0;
}
}
}
}
printf("\n");
return (0);
}
int put_world()
{
int x,y;
printf("Nach dem %d. Jahr:\n",zaehle_gen);
printf("+---------------------+\n");
for (y=1; y <= MATRIX_GROESSE; y++)
{
printf("|");
for (x=1; x <= MATRIX_GROESSE; x++)
{
if (weltkarte[diese_gen][x][y])
{
printf(" *");
} else {
printf(" ");
}
}
printf(" |\n");
}
printf("+---------------------+\n");
return (0);
}
Viele Dank für die schnelle Hilfe.