mirror of
https://github.com/13hannes11/archive.git
synced 2024-09-03 21:50:58 +02:00
179 lines
3.6 KiB
Plaintext
179 lines
3.6 KiB
Plaintext
int minToLive = 2;
|
|
int maxToLive = 3;
|
|
int countForBirth = 3;
|
|
|
|
int sizeX = 20;
|
|
int sizeY = 20;
|
|
int fieldSize = 10;
|
|
boolean[][] board;
|
|
boolean paused = true;
|
|
|
|
void reInit(int w, int h, int fS){
|
|
noLoop();
|
|
|
|
sizeX = w;
|
|
sizeY = h;
|
|
fieldSize = fS;
|
|
|
|
fill(255);
|
|
text("X: " + sizeX + " | Y: " + sizeY + " || FieldSize: " + fieldSize, 20, 20)
|
|
paused = true;
|
|
setup();
|
|
|
|
}
|
|
void setup(){
|
|
board = new boolean[sizeX][sizeY];
|
|
|
|
frameRate(10);
|
|
size(sizeX * fieldSize , sizeY * fieldSize);
|
|
|
|
loop();
|
|
}
|
|
void draw(){
|
|
background(255);
|
|
|
|
for(int x = 0; x < sizeX; x++){
|
|
for(int y = 0; y < sizeY; y++){
|
|
noStroke();
|
|
if(board[x][y])
|
|
fill(150,0,0);
|
|
else
|
|
fill(100);
|
|
rect(x*fieldSize, y* fieldSize, fieldSize, fieldSize);
|
|
|
|
/*fill(255);
|
|
text("" + countNeighbours(x, y) + "" ,x*fieldSize, y*fieldSize + fieldSize);*/
|
|
}
|
|
}
|
|
update();
|
|
}
|
|
|
|
void mouseDragged(){
|
|
if(mousePressed){
|
|
int x = (int)(mouseX / fieldSize);
|
|
int y = (int)(mouseY / fieldSize);
|
|
|
|
board[x][y] = true;
|
|
}
|
|
}
|
|
|
|
void update(){
|
|
if(!paused){
|
|
boolean[][] _tmp = new boolean[sizeX][sizeY];
|
|
//arrayCopy(board,_tmp); // _tmp = board.clone();
|
|
|
|
for(int x = 0; x < sizeX; x++){
|
|
for(int y = 0; y < sizeY; y++){
|
|
int c = countNeighbours(x,y);
|
|
if(c < minToLive || c > maxToLive)
|
|
_tmp[x][y] = false;
|
|
else if(c == countForBirth || (c >= minToLive && c <= maxToLive && board[x][y]))
|
|
_tmp[x][y] = true;
|
|
}
|
|
}
|
|
|
|
arrayCopy(_tmp, board); //board = _tmp.clone();
|
|
//paused = true;
|
|
}
|
|
}
|
|
|
|
// 1 2 3
|
|
// 4 5
|
|
// 6 7 8
|
|
int countNeighbours(int x, int y){
|
|
int counter = 0;
|
|
|
|
int _x = 0;
|
|
int _y = 0;
|
|
|
|
//N1
|
|
if(x == 0)
|
|
_x = sizeX -1;
|
|
else
|
|
_x = x -1;
|
|
|
|
if(y == 0)
|
|
_y = sizeY -1;
|
|
else
|
|
_y = y -1;
|
|
|
|
if(board[_x][_y])
|
|
counter++;
|
|
|
|
//N2
|
|
_x = x;
|
|
if(y == 0)
|
|
_y = sizeY -1;
|
|
else
|
|
_y = y - 1;
|
|
if(board[_x][_y])
|
|
counter++;
|
|
//N3
|
|
if(x == sizeX -1)
|
|
_x = 0;
|
|
else
|
|
_x = x + 1;
|
|
if(y == 0)
|
|
_y = sizeY -1;
|
|
else
|
|
_y = y -1;
|
|
if(board[_x][_y])
|
|
counter++;
|
|
//N4
|
|
_y = y;
|
|
if(x == 0)
|
|
_x = sizeX -1;
|
|
else
|
|
_x = x -1;
|
|
if(board[_x][_y])
|
|
counter++;
|
|
//N5
|
|
_y = y;
|
|
if(x == sizeX -1)
|
|
_x = 0;
|
|
else
|
|
_x = x +1;
|
|
if(board[_x][_y])
|
|
counter++;
|
|
//N6
|
|
if(x == 0)
|
|
_x = sizeX -1;
|
|
else
|
|
_x = x -1;
|
|
if(y == sizeY -1)
|
|
_y = 0;
|
|
else
|
|
_y = y +1;
|
|
if(board[_x][_y])
|
|
counter++;
|
|
//N7
|
|
_x = x;
|
|
if(y == sizeY -1)
|
|
_y = 0;
|
|
else
|
|
_y = y +1;
|
|
if(board[_x][_y])
|
|
counter++;
|
|
//N8
|
|
if(x == sizeX -1)
|
|
_x = 0;
|
|
else
|
|
_x = x +1;
|
|
if(y == sizeY -1)
|
|
_y = 0;
|
|
else
|
|
_y = y +1;
|
|
if(board[_x][_y])
|
|
counter++;
|
|
return counter;
|
|
}
|
|
void pause(){
|
|
paused = !paused;
|
|
}
|
|
void keyPressed() {
|
|
if(keyCode == ENTER)
|
|
paused = !paused;
|
|
if(keyCode == DOWN)
|
|
reInit(20,20,10);
|
|
}
|