xxxxxxxxxx
82
let towerTargetAmount = 20;
let towerVisionSize = 65;
// THESE ARE THE ONLY NUMBERS THAT CHANGE ^
let growRate = 0.2;
let startingAmount = 150;
let circles = [];
let currentAmount;
let towerFinalSize = 5;
let borderPadding = towerVisionSize/4;
function setup() {
createCanvas(800, 450);
rectMode(CENTER);
noStroke();
setupCirclePack();
}
function draw() {
background(220);
fill(255);
// ellipse(width/2, height/2, towerVisionSize);
fill("purple");
ellipse(width/2, height/2, 15);
updateCirclePack();
displayCircles();
}
function setupCirclePack() {
circles = [];
currentAmount = 0;
for (let i = 0; i < startingAmount; i++) {
let x = random(borderPadding, width-borderPadding);
let y = random(borderPadding, height-borderPadding);
circles.push(new CirclePackCircle(x, y));
}
}
function updateCirclePack() {
for (let i = 0; i < circles.length; i++) {
circles[i].update();
}
}
function displayCircles() {
let done = currentAmount == towerTargetAmount ? true : false;
for (let i = 0; i < circles.length; i++) {
if (circles[i].growing) {
push();
translate(circles[i].x, circles[i].y);
if (done) {
let distance = dist(circles[i].x, circles[i].y, width/2, height/2);
fill(255);
ellipse(0, 0, distance*0.5+10);
fill("green");
rect(0, 0, towerFinalSize);
}
if (circles[i].radius > 0) {
fill(160);
ellipse(0, 0, circles[i].radius*2);
}
pop();
}
if (done) circles[i].radius -= 1;
}
}