class Particle { float x, y; // Position float vx, vy; // Velocity; int age; int spawnTime = 0; boolean sex; float size = 12; Particle(float px, float py, int page, boolean psex) { x = px + random(-12, 12); y = py + random(-12, 12); age = page; sex = psex; vx = random(-2, 2); vy = random(-2, 2); } void move(float gx, float gy) { vx += 0.1 * random(1) * max(min(gx - x, 1), -1); vy += 0.1 * random(1) * max(min(gy - y, 1), -1); float maxVel = 4 - (norm(age, 0, 1000) * 3); if (spawnTime > 0) { maxVel = maxVel / (spawnTime / 2); } vx = max(min(vx, maxVel), -maxVel); vy = max(min(vy, maxVel), -maxVel); x += vx; y += vy; age++; noStroke(); float drawSize = 1 + norm(age, 0, 1000) * 12; float opacity = 120 - (norm(age, 0, 1000) * 80); if (sex) { fill(255, 49, 166, opacity); // Pink } else { fill(49, 153, 255, opacity); // Blue } if (spawnTime > 0) { fill(255, min(opacity * 2, 255)); drawSize *= 1.5; } ellipse(x, y, drawSize, drawSize); spawnTime = max(0, spawnTime - 1); } }