// Changed within draw int ballPos ; int timesDrawCalledSinceLastHit ; int ballSpeed ; int numClicks ; int numHits ; // Assigned values in setup and never changed int ballStartPos ; int ballEndPos ; int ballSize ; void setup() { size(800, 100) ; ballSize = int(height*0.8) ; ballStartPos = -ballSize/2 - 30 ; ballEndPos = width + ballSize/2 ; ballPos = ballStartPos ; ballSpeed = 1 ; numClicks = 0 ; numHits = 0 ; timesDrawCalledSinceLastHit = 1000000 ; } void draw() { ++timesDrawCalledSinceLastHit ; background(0, map(numHits, 0, numClicks, 0, 255), 0) ; if (timesDrawCalledSinceLastHit < 10) { fill(255, 255, 0) ; } else { fill(255,0,0) ; } ellipse(ballPos, height/2, ballSize, ballSize) ; ballPos += ballSpeed ; if (ballPos >= ballEndPos) { ballPos = ballStartPos ; } } void mousePressed() { ++numClicks ; if (dist(ballPos, height/2, mouseX, mouseY) <= ballSize/2) { ++numHits ; timesDrawCalledSinceLastHit = 0 ; } println("Hits = " + numHits + ", Clicks = " + numClicks) ; } void keyPressed() { if (key == 'u' || key == 'U') { ballSpeed += 1 ; } else if ((key == 'd' || key == 'D') && ballSpeed > 1) { ballSpeed -= 1 ; } }