import processing.core.*; import processing.xml.*; import java.applet.*; import java.awt.Dimension; import java.awt.Frame; import java.awt.event.MouseEvent; import java.awt.event.KeyEvent; import java.awt.event.FocusEvent; import java.awt.Image; import java.io.*; import java.net.*; import java.text.*; import java.util.*; import java.util.zip.*; import java.util.regex.*; public class BallGame extends PApplet { // 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 ; public void setup() { size(800, 100) ; ballSize = PApplet.parseInt(height*0.8f) ; ballStartPos = -ballSize/2 - 30 ; ballEndPos = width + ballSize/2 ; ballPos = ballStartPos ; ballSpeed = 1 ; numClicks = 0 ; numHits = 0 ; timesDrawCalledSinceLastHit = 1000000 ; } public 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 ; } } public void mousePressed() { ++numClicks ; if (dist(ballPos, height/2, mouseX, mouseY) <= ballSize/2) { ++numHits ; timesDrawCalledSinceLastHit = 0 ; } println("Hits = " + numHits + ", Clicks = " + numClicks) ; } public void keyPressed() { if (key == 'u' || key == 'U') { ballSpeed += 1 ; } else if ((key == 'd' || key == 'D') && ballSpeed > 1) { ballSpeed -= 1 ; } } static public void main(String args[]) { PApplet.main(new String[] { "--bgcolor=#DFDFDF", "BallGame" }); } }