Game of life

Jitixx

Neues Mitglied
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.
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 ++;
    }
  }
}
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ß
 
Zuletzt bearbeitet von einem Moderator:

Robat

Top Contributor
Vorab: Habs jetzt nur überflogen.

Du könntest mal probieren anstatt die Referenz zu überschreiben (also: welt = weltneu) - nur die Inhalte der Arrays zu übertragen.
Also am Ende jeder Generation nur die Inhalte aus weltneu in welt zu schreiben.
 

Meniskusschaden

Top Contributor
Außerdem sieht dein Verfahren, die Anzahl der Nachbarn einer Celle zu ermitteln, seltsam aus. Du scheinst da einfach nur alle lebenden Zellen zu zählen.
 

Elenteria

Bekanntes Mitglied
hat es ein Grund das du alle Variablen doppelt, also ii jj aa bb cc dd etcetc., benennst? Sprechende Variablennamen sind sehr sehr hilfreich um Fehler zu finden. Deine Art wie du die Nachbarn zählst sieht falsch aus. Das erste was du da machst ist ALLE Felder zu zählen die true sind. Richtig wäre nur die true-Felder um das zu Analysierende Feld zu zähen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Game of Life Nachbarn zählen Java Basics - Anfänger-Themen 20
P Moore Nachbarschaft-Game of Life Java Basics - Anfänger-Themen 1
L Conways Game of Life Java Basics - Anfänger-Themen 4
E Belebeste Area im Game of Life suchen Java Basics - Anfänger-Themen 0
B Wer kennt einen Link für vollständiges, leichtverständliches "Game of Life"? Java Basics - Anfänger-Themen 1
C Game of life Java Basics - Anfänger-Themen 14
P Game of Life Java Basics - Anfänger-Themen 18
C Conways Game of Life / "Waldbrandsimulation": wieso temporäres Hilfs-Array?! Java Basics - Anfänger-Themen 8
K Game of Life Implementierung Java Basics - Anfänger-Themen 30
D Game of Life - Nachbarn zählen Java Basics - Anfänger-Themen 8
Developer_X Game of Life Java Basics - Anfänger-Themen 10
L Game of life in einem FensterVisualisieren Java Basics - Anfänger-Themen 2
D Game of Life Java Basics - Anfänger-Themen 14
L Wizzard-Game Java Basics - Anfänger-Themen 3
Jxhnny.lpz bouncing Ball (Brick-Breaker-Game) Java Basics - Anfänger-Themen 1
V Probleme Guessing Game Java Basics - Anfänger-Themen 8
P 2D Game Java Basics - Anfänger-Themen 6
B Verwirrender Game Loop Java Basics - Anfänger-Themen 6
B "Snake"-Game verbuggt Java Basics - Anfänger-Themen 0
K Game of live Java Basics - Anfänger-Themen 4
F Java Collectors Game Hilfe Java Basics - Anfänger-Themen 4
C Wie kann ich jetzt von der Game.java auf die Timer.java zugreifen? Java Basics - Anfänger-Themen 6
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
D Textfield im Game ,Problem: while-Schleife Java Basics - Anfänger-Themen 1
K Gutes Java 3D Game Tutorial gesucht Java Basics - Anfänger-Themen 6
Java-Insel Game-Konzept Java Basics - Anfänger-Themen 10
G Game Loop Problem Java Basics - Anfänger-Themen 9
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2
V Start ins Java Game Development Java Basics - Anfänger-Themen 22
I Programm Game & AR Java Basics - Anfänger-Themen 13
T Anagram Game - warum ist es auf 2 Packages aufgeteilt? Java Basics - Anfänger-Themen 3
S 3d-game java3d/eigene API Java Basics - Anfänger-Themen 4
C Pong Game Java Basics - Anfänger-Themen 2
H What is the Life Cycle of an Object Created Within/Outside of a Servlet? Will that item be destroyed after the session ends? Java Basics - Anfänger-Themen 1
B Erste Schritte Way of life ohne import - Habe Beispiel, macht Unfug Java Basics - Anfänger-Themen 21

Ähnliche Java Themen

Neue Themen


Oben