Abend ihr Lieben,
Ich darf das allbekannte Game of Life programmieren. Leider wurde ich aus den bereits bestehenden Artikeln nicht schlau, daher seid bitte nicht böse, dass ich nochmal selber nachfrage.^^
Ich habe schon einiges selber programmiert, bin aber auf kleine Probleme gestoßen.
Mein erstes Problem ist, dass mein Rand fest sein soll. (Das Array ist festgegt und darf auch nicht verändert werden)
Die Frage ist wie ich am Rad die Nachbarn zählen kann.
Zum anderen (ein eher kleiner Denkfehler) soll ich ja bei der Methode totOderLebendig ein boolean Wert zurückgeben, aber wie soll der aussehen?
Bitte nicht über die einfachsten Fragen wundern, ich bin ein blutiger Anfänger.^^"
Ich darf das allbekannte Game of Life programmieren. Leider wurde ich aus den bereits bestehenden Artikeln nicht schlau, daher seid bitte nicht böse, dass ich nochmal selber nachfrage.^^
Ich habe schon einiges selber programmiert, bin aber auf kleine Probleme gestoßen.
Java:
public class Zellen
{
int i,j,nachbar;
boolean [][] nextG = new boolean [i][j];//Speicherarray für nächste Generation
boolean [][] zellenFeld = new boolean [i][j];
/*
* zellenFeld = Menge von Zellen die entweder tot(false)
* oder lebendig(true) sind.
*/
int nachbarnZaehlen()
{
nachbar = 0;
if (zellenFeld[i][j+1]==true)
nachbar++;
if (zellenFeld[i+1][j+1]==true)
nachbar++;
if (zellenFeld[i+1][j]==true)
nachbar++;
if (zellenFeld[i+1][j-1]==true)
nachbar++;
if (zellenFeld[i][j-1]==true)
nachbar++;
if (zellenFeld[i-1][j-1]==true)
nachbar++;
if (zellenFeld[i-1][j]==true)
nachbar++;
if (zellenFeld[i-1][j+1]==true)
nachbar++;
return nachbar;
}
void print()
{
if(zellenFeld[i][j]==true)
{
System.out.println("o");
}
else
{
System.out.println(" ");
}
}//Ende print()
boolean totOderLebendig(int i,int j)
{
nachbarnZaehlen();
/* eine lebende Zelle mit weniger als zwei lebenden Nachbarn
*ist in der nächsten Generation tot.
*/
if (zellenFeld[i][j]==true)
{
if(nachbar<2)
nextG[i][j]=false;
/*
*eine lebende Zelle mit mehr als drei lebenden
*Nachbarn ist in der nächsten Generation tot.
*/
if(nachbar>3)
nextG[i][j]=false;
}
else if(zellenFeld[i][j]==false)
{
/*eine tote Zelle mit genau drei lebenden Nachbarn wird
* in der nächsten Generation neu geboren.
*/
if(nachbar==3)
nextG[i][j]=true;
}
}// Ende totOderLebendig
/**
* Die nächste Generation wird berechnet.
*/
void naechsteGeneration()
{
for(int i=0;i<10; i++)
{
for(int j=0;j<10;j++)
{
nextG[i][j] = totOderLebendig(i,j);
//nächste Generation wird in nextG ersteinmal eingespeichert
}
}
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
{
zellenFeld[i][j] = nextG[i][j];
//Wert des Zwischenspeicherarrays wird übertragen
}
}
}
}//Ende Zellen
Mein erstes Problem ist, dass mein Rand fest sein soll. (Das Array ist festgegt und darf auch nicht verändert werden)
Die Frage ist wie ich am Rad die Nachbarn zählen kann.
Zum anderen (ein eher kleiner Denkfehler) soll ich ja bei der Methode totOderLebendig ein boolean Wert zurückgeben, aber wie soll der aussehen?
Bitte nicht über die einfachsten Fragen wundern, ich bin ein blutiger Anfänger.^^"