Hallo,
ich möchte Conweys Spiel des Lebens (Game of life) programmieren. Dabe ist das Spielfeld mit einem zweidimensionalen Boolean-Array der Größe M*N dargestellt. Die Zustände Lebendig =true, tot=false. Jede Zehle hat 8 Nachbarn. Dafür dass es auch wirklich gilt berechne ich die Zustände nur auf den Indizies 0<i<M-1 sowie 0<j<N-1. Infolgedessen sind Zellen auf dem äußeren Rand zu allen Zeiten tot.
Erster Regel des Spels lautet: Eine tote Zelle mit genau drei lebenden Nachbarn wird in der folgegeneration neu geboren.
Nun muss ich dieser Regel als eine Funktion schreiben. Von 8 Nachbarn je dreier Kombinationen ergit sich insgesamt als 56 Kombinationen. Ich musste also 56 if anfrage machen um dieser Regel in einem algorithm umzuschreiben.
....usw
Kennt ihr einen einfacheren weg?
Danke:bahnhof:
ich möchte Conweys Spiel des Lebens (Game of life) programmieren. Dabe ist das Spielfeld mit einem zweidimensionalen Boolean-Array der Größe M*N dargestellt. Die Zustände Lebendig =true, tot=false. Jede Zehle hat 8 Nachbarn. Dafür dass es auch wirklich gilt berechne ich die Zustände nur auf den Indizies 0<i<M-1 sowie 0<j<N-1. Infolgedessen sind Zellen auf dem äußeren Rand zu allen Zeiten tot.
Erster Regel des Spels lautet: Eine tote Zelle mit genau drei lebenden Nachbarn wird in der folgegeneration neu geboren.
Nun muss ich dieser Regel als eine Funktion schreiben. Von 8 Nachbarn je dreier Kombinationen ergit sich insgesamt als 56 Kombinationen. Ich musste also 56 if anfrage machen um dieser Regel in einem algorithm umzuschreiben.
Java:
public class Life {
public static boolean[][] conwayStep(boolean [][] world) {
boolean[] [] newWorld = new boolean[world.length] [world[0].length];
int m=world.length;
int n=world[0].length;
//Erster Regel:Eine tote Zelle mit genau drei lebenden Nachbarn wird in Folgegeneration neu geboren
for(int i=1;i<m-1;i++){
for(int j=1;j<n-1; j++){
if(world[i][j]==false){
if(((world[i-1][j-1]==true)&&(world[i-1][j]==true))&&(world[i-1][i+1]==true)){
else{
if((world[i-1][j-1]==true)&&(world[i-1][j]==true)&&(world[i-1][i+1]==true))
}
Kennt ihr einen einfacheren weg?
Danke:bahnhof:
Zuletzt bearbeitet: