Surens Animation
<< Eni's and Erik's Hockey Game | OldProjectsTrailIndex | Kevin's Tower Defense Game >>
Suren's Disk racer animation.
Fr Chris' notes
Its getting better and better!
/**
* A Sample Animation with a Restart button * * @author Fr Chris Thiel, OFMCap * @version 9 May 2007 */
import java.awt.event.*; import java.applet.*; import java.applet.Applet; import java.awt.*; import javax.swing.*;
public class SampleAnimation extends Applet
implements ActionListener
{
Timer timer;
Image virtualMem;
Graphics gBuffer;
int appletWidth;
int appletHeight;
int frame;
int lastFrame;
double rate1=.5;
double rate2=.5;
double rate3=.5;
double rate4=.5;
double rate5=.5;
Button myButton;
AudioClip racecars;
/**
* ActionListener is an interface and
* requires the actionPerformed() method
* to be defined..in this case we
* look for a restart button being pressed
*/
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
if (source == timer)
{
if (frame < lastFrame)
{
frame++;
}
else {
frame=0;
rate1=Math.random();
rate2=Math.random();
rate3=Math.random();
rate4=Math.random();
rate5=Math.random();
}
}
else {
//restart button pressed
frame=0;
rate1=Math.random();
rate2=Math.random();
rate3=Math.random();
rate4=Math.random();
rate5=Math.random();
if (timer.isRunning())
{
timer.stop();
myButton.setLabel("Start");
if(racecars!=null)racecars.stop();
}
else
{
timer.start();
myButton.setLabel("Stop");
if(racecars!=null) racecars.loop();
}
}
repaint();
}
// OUR CLASS IS A SUBCLASS OF APPLET
/**
* this init() method will be run at the beginning
* and where we create the Listeners
*/
public void init()
{
appletWidth = getWidth();
appletHeight = getHeight();
frame=0;
timer=new Timer(10,this);
lastFrame=appletWidth;
virtualMem = createImage(appletWidth,appletHeight);
gBuffer = virtualMem.getGraphics();
gBuffer.setColor(Color.white);
gBuffer.fillRect(0,0,appletWidth,appletHeight);
myButton= new Button("5,4,3,2,1,0 Get Set Go!!!!!!!!");
//the class is its own button listener
myButton.addActionListener (this);
add(myButton);
//Audio
racecars = getAudioClip(getDocumentBase(), "racecars.wav");
}
public int speed(int f, double p)
{
return (int)(f*p);
}
public void paint(Graphics g)
{
//We draw using the object methods of
// the graphics buffer, not what is
// currently on the screen
gBuffer.setColor(Color.black);
gBuffer.fillRect(0,0,appletWidth,appletHeight);gBuffer.setColor(Color.black);
gBuffer.setColor(Color.black);
gBuffer.drawString("Frame "+frame,20,20);
gBuffer.setColor(Color.blue);
gBuffer.fillOval(speed(frame,rate1), 200, 50,50);
gBuffer.setColor(Color.orange);
gBuffer.fillOval(speed(frame,rate2), 100, 50,50);
gBuffer.setColor(Color.red);
gBuffer.fillOval(speed(frame,rate3), 10, 50,50);
gBuffer.setColor(Color.green);
gBuffer.fillOval(speed(frame,rate4), 300, 50,50);
gBuffer.setColor(Color.yellow);
gBuffer.fillOval(speed(frame,rate5), 400, 50,50);
//Now we send the result to the screen
g.drawImage(virtualMem,0,0,this);
}
public void update(Graphics g)
{
paint(g); //get rid of flicker with this method
}
}
