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?
4 Antworten
Jedes Feld muss auf seine Nachbarfelder hin reagieren, also solltest du jedes Feld seine Nachbarfelder überprüfen lassen.
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.
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
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.