package awb; import java.awt.*; public class RaceInfo extends Canvas { private Timer myTimer; private int myNumLaps, myTotalLapTime, myBestLapTime, myCurrentLapTime, myLastLapTime; private String myBestLapString, myLastLapString, myAvgLapString; private RaceTrack myTrack; private Race myRace; private Image myBuffer; private final static Font FONT = new Font("Helvetica", Font.PLAIN, 10); public RaceInfo(Race r, RaceTrack rt) { myRace = r; myTrack = rt; myTimer = new Timer(); myNumLaps = 0; myTotalLapTime = 0; myCurrentLapTime = 0; myBestLapTime = 0; myBestLapString = Timer.changeTicksToString(0); myLastLapString = Timer.changeTicksToString(0); myAvgLapString = Timer.changeTicksToString(0); } public void startRace() { myTimer.startTimer(); } public void stopRace() { myTimer.stopTimer(); } public void update() { if (myBuffer == null) myBuffer = createImage(size().width, size().height); paint(myBuffer.getGraphics()); getGraphics().drawImage(myBuffer,0,0,this); } public void paint(Graphics g) { g.clearRect(0,0,120,100); g.setFont(FONT); g.drawString("Laps Completed: " + myNumLaps,5,10); g.drawString("Elapsed Time: " + getElapsed(),5,20); g.drawString("Current Lap: " + getCurrentLap(),5,30); g.drawString("Last Lap: " + myLastLapString,5,40); g.drawString("Best Lap: " + myBestLapString,5,50); g.drawString("Average Lap: " + myAvgLapString,5,60); } public void incrementLap() { myNumLaps++; myLastLapTime = myTimer.getElapsedTicks() - myTotalLapTime; myTotalLapTime += myLastLapTime; myLastLapString = Timer.changeTicksToString(myLastLapTime); if ((myLastLapTime < myBestLapTime) || (myBestLapTime == 0)) { myBestLapTime = myLastLapTime; myBestLapString = Timer.changeTicksToString(myBestLapTime); } if (myNumLaps == 0) { myAvgLapString = Timer.changeTicksToString(0); } else { myAvgLapString = Timer.changeTicksToString(myTotalLapTime / myNumLaps); } } public int getLaps() { return myNumLaps; } public String getAvgTime() { return myAvgLapString; } public Dimension preferredSize() { return new Dimension(120,100); } private String getElapsed() { return myTimer.getElapsedTime(); } private String getCurrentLap() { return Timer.changeTicksToString(myTimer.getElapsedTicks() - myTotalLapTime); } }