Frage von nickXXX, 60

Das Game of Life möglichst einfach in Java schreiben?

Hallo! Ich hab eine kleine Programmieraufgabe und komme leider zu keinem vernünftigen Ergebnis. Mit einfachen Mitteln soll am Ende das "Game of Life" von Conway herauskommen.

Dazu habe ich ein Array erzeugt, mit dem dann später quasi eine 10x10 Felder Animation in der Console ablaufen sollte.

Bisher habe ich das hier:

public class GOL {

public static void main(String[] args) {

int[][] Welt = { 
{0,0,0,0,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,1,0,0,0,0,0,0,1,0},
{0,0,0,0,0,0,0,0,0,0}
};
int[][] NG = { 
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0}
};
int ii;
int jj; 

for (ii=1;ii<9 ;ii++ ) {
  for (jj=1;jj<9 ;jj++ ) {
    if (Welt[ii][jj] == 0) {
      System.out.print(" ");
    }
    else {
      System.out.print("#");  
    }
  } 
  System.out.println("");
}

for (ii=1;ii<9 ;ii++ ) {
  for (jj=1;jj<9 ;jj++ ) {
    Welt[ii][jj] = NG[ii][jj];
  } 
}

}

}

Damit werden mir nun in Form von "#" die "Lebewesen" angezeigt, aber wie frage ich am besten die Bedingungen, des Game-of-Life ab und lasse entsprechend die Ausgabe erzeugen? Ich steh total auf dem Schlauch. Habt ihr ein paar Tipps für mich?

Antwort
von regex9, 37

Jedes Feld muss auf seine Nachbarfelder hin reagieren, also solltest du jedes Feld seine Nachbarfelder überprüfen lassen.

Antwort
von phigeek, 22

Eine Java Lösung des "Game of Life" ist bereits hier:

http://www.programmieraufgaben.ch/aufgabe/conways-game-of-life/ch5c67pm

Wenn Du mit Deiner Lösung zufrieden bist, kannst Du sie auch dort deponieren. Es sind insgesamt schon 1300 Lösungen zu verschiedenen Aufgaben in verschiedenen Sprachen online.

Antwort
von MalNachgedacht, 12

Du mußt eine Methode schreiben die die Zahl der lebenden Nachbarfelder zählt und du mußt festlegen wie Nachbarfelder am Rand definiert sind (entweder haben die dann weniger Nachbarn oder man tut so als wäre das Feld auf der gegenüberliegenden Seite der jeweilige Nachbar)

um die Nachbarzellen "abzuklappern" kann man zwei verschachtelte Schleifen nutzen die jeweils von x = -1 bis +1  und y= -1 bis +1 laufen

was dann 3  x 3 Nachbarfelder ergibt wobei x=0,y=0 natürlich ein Sonderfall ist 

Je nach "Randlogik" muss man noch prüfen ob die errechnete Nachbarzelle innerhalb des Spielfelds liegt

Antwort
von PerfectMuffin, 40

Super, du hast die Welt implementiert und eine Ausgabefunktion gemacht, aber mit der Aufgabe selbst überhaupt nicht angefangen.

Es ist nicht sehr ehrenvoll dir die Lösung auf diesem Weg zu besorgen, mach' deine Aufgaben allein und wenn du ein konkretes Problem hast helfen wir gerne. Wir machen aber nicht deine Arbeit.

Keine passende Antwort gefunden?

Fragen Sie die Community