Hallo Forum,
ich hab da eine Frage. Und zwar hab ich Studium bedingt nun seit einigen Wochen mit Java zutun. Der Titel sagt ja schon woran ich gerade arbeite. Als erstes mal mein Code bzw. wie "weit" ich schon gekommen bin.
Dass der Code wohl möglich Unsauberkeit sein Vater ist und man das ganze sicher viel schicker mit Methoden hätte lösen können, ist mir klar - aber ich bin in Sachen Methoden noch nicht ganz so fit.
Nun meine Frage: Bis zur zweiten Generation klappt es schon so wie es soll (glaub ich) aber danach wiederholt er einfach nur noch. Ich weiß bzw. vermute dass ich dem Programm nach dem ersten Schleifendurchlauf irgendwie erklären muss dass "weltneu" = "welt" ist. Ich weiß nur nicht genau wie. Wenn ich das intuitiv an das ende der Schleife setze, gibt er mir in den Folgegenerationen nur noch false aus.
Bin um jede Hilfe dankbar.
Lieben Gruß
ich hab da eine Frage. Und zwar hab ich Studium bedingt nun seit einigen Wochen mit Java zutun. Der Titel sagt ja schon woran ich gerade arbeite. Als erstes mal mein Code bzw. wie "weit" ich schon gekommen bin.
Java:
public class gameoflife {
public static void main(String[] args) {
boolean [][] welt = new boolean [11][11];
boolean [][] weltneu = new boolean [11][11];
int generation = 2;
int durchlauf = 10;
for (int ii=0; ii<11 ; ii++ ) { // Zufallswerte
for (int jj=0; jj<11 ;jj++ ) {
if (ii<1 || ii>10 || jj<1 || ii>10 ) {
welt[ii][jj] = false;
}
else {
welt[ii][jj] = Math.random() > 0.4;
}
}
}
System.out.println("1. Generation");
System.out.println();
for (int aa=1; aa<11; aa++ ) { // Welt ausgeben
for (int bb=1; bb<11; bb++ ) {
if (welt[aa][bb]) {
System.out.print("1 ");
}
else {
System.out.print("0 ");
}
}
System.out.println();
}
while (generation < durchlauf) {
System.out.println();
System.out.println(generation + ". Generation");
System.out.println();
for (int hh=1; hh<11 ; hh++ ) {
for (int kk=1; kk<11 ; kk++ ) {
int nachbarn = 0;
for (int cc=0; cc<11; cc++ ) { // Nachbarn zählen
for (int dd=0; dd<11; dd++ ) {
if (welt[cc][dd]) {
nachbarn = nachbarn + 1;
}
if (welt[hh][kk]) {
if (nachbarn < 2 || nachbarn > 3) {
weltneu[hh][kk] = false;
}
if (nachbarn == 2 || nachbarn == 3) {
weltneu[hh][kk] = true;
}
}
else {
if (nachbarn == 3) {
weltneu[hh][kk] = true;
}
}
}
}
if (weltneu[hh][kk]) {
System.out.print("1 ");
}
else {
System.out.print("0 ");
}
}
System.out.println();
}
generation ++;
}
}
}
Nun meine Frage: Bis zur zweiten Generation klappt es schon so wie es soll (glaub ich) aber danach wiederholt er einfach nur noch. Ich weiß bzw. vermute dass ich dem Programm nach dem ersten Schleifendurchlauf irgendwie erklären muss dass "weltneu" = "welt" ist. Ich weiß nur nicht genau wie. Wenn ich das intuitiv an das ende der Schleife setze, gibt er mir in den Folgegenerationen nur noch false aus.
Bin um jede Hilfe dankbar.
Lieben Gruß
Zuletzt bearbeitet von einem Moderator: