Hallo Leute,
ich habe folgenden Code
Vielleicht kennt jemand von euch das Spiel des Lebens.
Ich hab in der Klasse ein Array feld deklariert. In der Methode nextGeneration() baue ich mir ein 2. Array feld2, in dem ich die Änderungen von feld eintrage.
Damit ich nun das Spiel über mehrere Generationen laufen lassen kann, will ich die Referenz von feld zu "Array1" "umverlegen" zu dem Array, das feld2 referenziert.
bei "hier code eingeben"
hab ich 2 Dinge ausprobiert.
this.feld=feld2 sollte die Sache für mich schaukeln. Ich weiss, dass das dann noch nicht fertig ist, aber ich wollt erstmal nur die 1. Zeile richtig haben.
ich habe folgenden Code
Java:
package gameOfLife;
public class GameOfLife {
boolean[][] feld = { { false, false, false, false, false }, { false, false, true, false, false },
{ false, false, true, false, false }, { false, false, true, false, false },
{ false, false, false, false, false } };
public static void main(String[] args) {
GameOfLife myGame = new GameOfLife();
for (int i = 0; i < 10; i++) {
myGame.nextGeneration();
myGame.print();
System.out.println();
}
}
void print() {
for (int i = 0; i < feld.length; i++) {
for (int j = 0; j < feld[i].length; j++) {
if (feld[i][j] == true)
System.out.print("o ");
else
System.out.print(". ");
}
System.out.println();
}
}
void nextGeneration() {
/*
* 1 Eine lebende Zelle lebt auch in der Folgegeneration, wenn genau zwei oder
* drei der acht benachbarten Zellen in der aktuellen Generation leben. 2 Eine
* lebende Zelle stirbt in der Folgegeneration an Einsamkeit oder
* Überbevölkerung, wenn in der aktuellen Generation weniger als zwei oder mehr
* als drei der acht Nachbarzellen leben. 3 Eine tote Zelle wird in der
* Folgegeneration lebendig, wenn genau drei ihrer acht Nachbarn in der
* aktuellen Generation lebendig sind. 4 Unabhängig von den obigen drei Regeln
* sind die Randzellen (also diejenigen Zellen, die nicht genau acht Nachbarn
* haben) immer tot. Da Sie für die Berechnung aller Zellen der Folgegeneration
* noch Zugriff auf die Zustände der aktuellen Generation benötigen, sollten Sie
* die Zustände der Folgegeneration zunächst in ein neues, zweidimensionales
* boolean-Array gleicher Gröÿe schreiben. Ihre Implementierung sollte nach
* Möglichkeit unabhängig von der Grösse der Zellkultur funktionieren; Sie
* dürfen aber von einer rechteckigen Zellkultur ausgehen.
*/
boolean[][] feld2 = new boolean[feld.length][];
for (int s = 0; s < feld.length; s++) {
feld2[s] = new boolean[feld.length];
System.out.println();
}
int anzahllebendnachbarn = 0;
// anzahllebendnachbarnüberprüfung
for (int u = 1; u < feld2.length - 1; u++) {
for (int v = 1; v < feld2[u].length - 1; v++) {
boolean[] arr = { feld[u + 1][v], feld[u][v + 1], feld[u + 1][v + 1], feld[u - 1][v], feld[u][v - 1],
feld[u - 1][v - 1], feld[u - 1][v + 1], feld[u + 1][v - 1] };
for (boolean elem : arr) {
if (elem == true) {
anzahllebendnachbarn = anzahllebendnachbarn + 1;
}
}
if (anzahllebendnachbarn < 4 && anzahllebendnachbarn > 1) {
feld2[u][v] = true;
}
if (feld[u][v] == false && anzahllebendnachbarn == 3) {// 3.Bedingung
feld2[u][v] = true;
}
if (anzahllebendnachbarn == 2 || anzahllebendnachbarn == 3) {// 1.Bedingung
feld2[u][v] = true;
}
if (anzahllebendnachbarn < 2 || anzahllebendnachbarn > 3) {// 2.Bedingung
feld2[u][v] = false;
}
}
}
//hier code eingeben
this.feld=feld2;
//for(int i=0;i<feld2.length;i++) {
//this.feld[i]=feld2[i];
}
}
}
Ich hab in der Klasse ein Array feld deklariert. In der Methode nextGeneration() baue ich mir ein 2. Array feld2, in dem ich die Änderungen von feld eintrage.
Damit ich nun das Spiel über mehrere Generationen laufen lassen kann, will ich die Referenz von feld zu "Array1" "umverlegen" zu dem Array, das feld2 referenziert.
bei "hier code eingeben"
hab ich 2 Dinge ausprobiert.
this.feld=feld2 sollte die Sache für mich schaukeln. Ich weiss, dass das dann noch nicht fertig ist, aber ich wollt erstmal nur die 1. Zeile richtig haben.