Hi, ich mach mir grad ein Game of Life.
Bei mir wird zwar ne ausgabe gemacht, aber ich anscheinend sterben bei mir keine Nachbarn weg ;(
Ich grübbel schon tagelang und find einfach nichts >.<
Hiermal der Source-Code:
#include<stdio.h>
#include<string.h>
void advance (int x, int y)
{
int j;
int i;
int star=0;
int now[100][100];
int next[100][100];
for (i = 0; i < x; i++) // Mein Spielfeld
{
for (j = 0; j < y; j++)
{
now[i][j]=rand()%2; /* Zufallsgenerator weist dem array 0 oder 1 zu */
}
}
// Regeln und Nachbarn zählen
system("cls");
for (i = 0; i < x; i++)
{
for (j = 0; j < y; j++) /* Spielfeld nochmal */
{
if((i-1>=0)&&(j-1>=0)) /* oben links */
{
if(now[(i-1)%x][(j-1)%y]==1)
{
star++;
}
}
if(i >= 0) /* oben */
{
if(now[(i-1)%x][j]==1)
{
star++;
}
}
if((i-1>=0)&&(j+1<=y)) /* oben rechts*/
{
if(now[(i-1)%x][(j+1)%y]==1)
{
star++;
}
}
if(j-1>=0) /* links */
{
if(now[i][(j-1)%y]==1)
{
star++;
}
}
if(j+1<=y) /* rechts */
{
if(now[i][(j+1)%y]==1)
{
star++;
}
}
if((i+1<=x)&&(j-1>=0)) /* unten links */
{
if(now[(i+1)%x][(j-1)%y]==1)
{
star++;
}
}
if(i+1<x) /* unten */
{
if(now[(i+1)%x][j]==1)
{
star++;
}
}
if((i+1<=x)&&((j+1<=y))) /* unten rechts */
{
if(now[(i+1)%x][(j+1)%y]==1)
{
star++;
}
}
/* Leben oder Tod */
if((star < 2) || (star > 3) )
{
next[i][j]=0;
}
else if((star == 3) && (next[i][j]==0))
{
next[i][j]=1;
}
else if(star == 2)
{
next[i][j]=now[i][j];
}
}
}
for(i=0; i<x; i++)
{
for(j=0; j<y; j++)
{
next[i][j]=now[i][j]; //Ausgabe
if (next[i][j] == 1)
{
printf("X");
}
else
printf(" ");
}
printf("\n"); //Zeilenumbruch
}
}
int main ()
{
int x=0;
int y=0;
int gen=0;
int time;
//Eingabe
printf("Breite\n");
scanf("%d", &x);
printf("Hoehe\n");
scanf("%d", &y);
while(gen<1000)
{
advance(x,y);
gen++;
}
}
Hoffe jem. hat ein gutes Auge ^^
Lg