000
02.03.2015, 13:03 Uhr
Bolle
|
Hi ich sitz gerade am game of life. An einer Stelle häng ich grade und weis nicht recht, also Ich weis überhaupt nicht woran es liegen könnte.
Das Problem ist das beim testen nach Nachbarn "anzNachbarn++" nicht klappt. Ich hab nach anderem code geguckt, die schleife extern ausprobiert. Läuft alles gut deswegen bin ich so ratlos. Hab's auch mit static probiert. Hat nichts geändert.
Ich würde daher gern wissen wo mein Fehler liegt.
Außerdem würde mich noch interessieren ob der Code evtl Unpraktisch, umständlich o.ä. ist. Was ihr daran verbessern würdet.
Danke schonmal im vorraus.
C++: |
#include <iostream>
int Feld_aktuell [25][25] = { 0 }; int Feld_Naechste [25][25] = { 0 }; int PosX=0, PosY=0;
static int anzNachbarn=0;
int NachbarTest(int PosY, int PosX){ anzNachbarn = 0; if(Feld_aktuell[PosY-1][PosX-1]=='1') anzNachbarn++; if(Feld_aktuell[PosY-1][PosX] == '1') anzNachbarn++; if(Feld_aktuell[PosY-1][PosX+1]=='1') anzNachbarn++; if(Feld_aktuell[PosY] [PosX+1] == '1') anzNachbarn++; if(Feld_aktuell[PosY] [PosX+1] == '1') anzNachbarn++; if(Feld_aktuell[PosY+1][PosX-1]=='1') anzNachbarn++; if(Feld_aktuell[PosY+1][PosX] == '1') anzNachbarn++; if(Feld_aktuell[PosY+1][PosX+1]=='1') anzNachbarn++;
if( anzNachbarn == 2 || anzNachbarn == 3) Feld_Naechste[PosY][PosX] = 1; else if( anzNachbarn == 0 || anzNachbarn == 1 || anzNachbarn == 4 || anzNachbarn == 5 || anzNachbarn == 6 || anzNachbarn == 7 || anzNachbarn == 8 ) Feld_Naechste[PosY][PosX] = 0;
return anzNachbarn; //zu testzwecken }//NachbarTest
void Ausgabe_Feld(){ for(PosY=0; PosY<25; PosY++) //Ausgabe aktueller Generation { for(PosX=0; PosX<25;PosX++) { std::cout<<" "<<Feld_aktuell[PosY][PosX]; NachbarTest(PosY, PosX); }//for std::cout<<"\n"; }//for }
void Zufall(){ srand(time(NULL)); // for(PosY=0; PosY<25; PosY++) //Zufallsgenerator for(PosX=0; PosX<25;PosX++) // Feld_aktuell[PosY][PosX]= rand()%2; // }
int main() { Zufall();
while(1) { Ausgabe_Feld();
for(PosY=0; PosY<25; PosY++) //Aktuelle Generation mit neuer überschreiben for(PosX=0; PosX<25;PosX++) Feld_aktuell[PosY][PosX] = Feld_Naechste[PosY][PosX]; getchar(); }//while return 0; }//main
|
|