int cx, cy, r; boolean fire; void setup() { size(300,300); colorMode(HSB,360,100,100,100); ellipseMode(RADIUS); frameRate(15); background(0,0,0); // black cx = width / 2; cy = height / 2; fire = false; } void draw() { clearToWhite(); if( fire ) { r += 10; drawFire(); if( r > width / 2 + 30 ) { fire = false; } } else { if( random(1) < 0.07 ) { fire = true; r = 0; } } } void clearToWhite() { fill(0,0,0,50); // white noStroke(); rect(0,0,width,height); } void drawFire() { noStroke(); fill(random(360),50,100,70); for( float angle = 0 ; angle < 360 ; angle += 10 ) { float rad = 2 * PI * angle / 360.0; float dx = r * cos(rad); float dy = r * -sin(rad); ellipse(cx+dx,cy+dy,5,5); } }