Canvas Demo 3
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language>
The Game of Life is not your typical computer game. It is a 'cellular automaton', and was invented by Cambridge mathematician John Conway.
For a space that is 'populated':
* Each cell with one or no neighbors dies, as if by loneliness.
* Each cell with four or more neighbors dies, as if by overpopulation.
* Each cell with two or three neighbors survives.
For a space that is 'empty' or 'unpopulated'
* Each cell with three neighbors becomes populated.
<eval>
int w = 20;
int h = 10;
int[][] Spielfeld = new int[w][h];
for(int i=0; i<10; i++) Spielfeld[5+i][4] = 1;
void drawCell(int x, int y, boolean black){
if(black) canvas.setColor(0,0,0); else
canvas.setColor(255,255,255);
canvas.fillRect(50+x*25,y*25,25,25);
}
void drawCells(){
for(int x=0; x<w; x++)
for(int y=0; y<h; y++)
drawCell(x,y,Spielfeld[x][y] == 1);
}
int countNeighbors(int x, int y){
int r = 0;
if(x>0 && Spielfeld[x-1][y] == 1) r++;
if(x<w-1 && Spielfeld[x+1][y] == 1) r++;
if(y>0 && Spielfeld[x][y-1] == 1) r++;
if(y<h-1 && Spielfeld[x][y+1] == 1) r++;
if(x>0 && y>0 && Spielfeld[x-1][y-1] == 1) r++;
if(x>0 && y<h-1 && Spielfeld[x-1][y+1] == 1) r++;
if(x<w-1 && y>0 && Spielfeld[x+1][y-1] == 1) r++;
if(x<w-1 && y<h-1 && Spielfeld[x+1][y+1] == 1) r++;
return r;
}
void flipCells(){
int[][] SpielfeldNeu = new int[w][h];
for(int x=0; x<w; x++)
for(int y=0; y<h; y++){
int neighbors = countNeighbors(x,y);
SpielfeldNeu[x][y] = Spielfeld[x][y];
if(Spielfeld[x][y] == 1){
if (neighbors < 2 || neighbors > 3) SpielfeldNeu[x][y] = 0;
}else{
if (neighbors == 3) SpielfeldNeu[x][y] = 1;
}
}
Spielfeld = SpielfeldNeu;
}
canvas.clear();
while(true) { drawCells(); flipCells(); Thread.sleep(100); }
</eval>
<canvas></canvas>