mirror of
https://github.com/13hannes11/archive.git
synced 2024-09-03 21:50:58 +02:00
added all past projects
This commit is contained in:
178
Processing.js/GameOfLife/main.pds
Normal file
178
Processing.js/GameOfLife/main.pds
Normal file
@@ -0,0 +1,178 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user