# Conways Game of Life



## vigol13 (18. Jan 2014)

```
boolean[][] matrix1 = new boolean[ANZAHL_ZEILEN][ANZAHL_SPALTEN];
	boolean[][] matrix2 = matrix1.clone();
	
	public void paint(Graphics g) {
		fuellenMatrix(matrix2, 1);
		int schritte = 0;
		do {
			ausgebenMatrix(matrix2);
			 matrix1 = matrix2.clone();
			 berechneMatrix(matrix1, matrix2);
 			schritte++;
 //PAUSE 3 SEK
 			bremse(3000); 
			 System.out.println(schritte);
		} while (schritte < MAX_SCHRITTE && existierenUnterschiede(matrix1, matrix2));
	}

	public static void berechneMatrix(boolean[][] matrix1, boolean [][] matrix2) {
	
		for(int i = 0; i < matrix1.length; i++)
			for(int j = 0; j < matrix1[i].length; j++){
				if(matrix1[i][j] == false)
					if(anzLebendeNachbarn(matrix1, i, j) == 3)
						matrix2[i][j] = true;
					else
						matrix2[i][j] = false;
				else 
					if(anzLebendeNachbarn(matrix1, i, j) > 3 ||      anzLebendeNachbarn(matrix1, i, j) < 2)
						matrix2[i][j] = false;
					else
						matrix2[i][j] = true;
				}  
		}
	
	public static int anzLebendeNachbarn(boolean [][]matrix, int zeile, int spalte){
		int ret = 0;
		for(int i = zeile-1; i <= zeile+1; i++)
			for(int j = spalte-1; j <= spalte+1; j++)
				if(i>=0 && i<matrix.length && j>=0 && j<matrix[i].length)
					if(matrix[i][j] == true && !(i == zeile && j == spalte))
						ret++;
				
		return ret;
	}
}
```


----------

