Spot[] sp = new Spot[300]; void setup() { size(600, 600); background(255); smooth(); for (int i = 0; i < sp.length; i++) { sp[i] = new Spot( random(width/2-10, width/2+10), random(height/2-10, height/2+10 ) , random(1, height/20), random(2.5, 5) ); } } void draw() { for (int i = 0; i < sp.length; i++) { sp[i].moved(); sp[i].display(); } } class Spot { float x, y, diameter, speed; float h = random(256); float b_diameter; Spot(float _x, float _y, float _diameter, float _speed) { x = _x; y = _y; diameter = _diameter; speed = _speed; b_diameter = diameter; } void moved(){ diameter = b_diameter*sin(frameCount*speed*PI/400); } void display() { colorMode(HSB); fill(h, 255, 255, 1); noStroke(); if (mousePressed == true){ ellipse(mouseX, mouseY, diameter, diameter); } } }