import java.util.LinkedList; LinkedList spots = new LinkedList(); int maxSpots = 5; int lastX; int lastY; void setup() { size(800,600); smooth(); background(180); lastX = -1; lastY = -1; } void draw() { if (mousePressed == true) { if (lastX == -1) { lastX = mouseX; lastY = mouseY; } else { stroke(255,63); strokeWeight(2); line(mouseX, mouseY, lastX, lastY); lastX = mouseX; lastY = mouseY; } } if (spots.size() > 1) { if (random(0,100) < 10) { Spot a = (Spot)spots.get( (int)random(spots.size()) ); Spot b = (Spot)spots.get( (int)random(spots.size()) ); int w=20; float x1 = a.x + random(-w,w); float y1 = a.y + random(-w,w); float x2 = b.x + random(-w,w); float y2 = b.y + random(-w,w); stroke(0,30); strokeWeight(1); noFill(); line(x1,y1,x2,y2); } } if (spots.size() > 0 && random(0,100) < 20) { Spot a = (Spot)spots.get( (int)random(spots.size()) ); ellipseMode(CENTER); fill(180); noStroke(); ellipse(a.x, a.y, 10, 10); } } void mousePressed() { spots.addFirst(new Spot(mouseX, mouseY)); if (spots.size() > maxSpots) { Spot a = (Spot)spots.getLast(); ellipseMode(CENTER); fill(180); noStroke(); ellipse(a.x, a.y, 10, 10); spots.removeLast(); } } void mouseReleased() { lastX = -1; lastY = -1; mousePressed(); } class Spot { float x; float y; Spot(float newX, float newY) { x = newX; y = newY; } } void keyPressed() { if (key == 's' || key == 'S') { // save an image save("CE2-drawing-" + year() +"-"+ month() +"-"+ day() +"-" + hour() +"-" + minute() + ".png"); } else if (key == ENTER) { background(180); } }