import java.applet.*; import java.awt.*; public class JumpingBall3 extends Applet implements Runnable { int X,Y; double SinX=0.0, SinY=0.0; double SinOffX=2*Math.PI / 180, SinOffY = 5*Math.PI / 180; Thread Animation; private Image imBuffer; private Graphics grBuffer; public void init() { resize(400, 150); imBuffer = createImage(400,150); grBuffer = imBuffer.getGraphics(); grBuffer.setColor(getBackground()); grBuffer.fillRect(0,0,400,150); } public void paint(Graphics g) { g.drawImage(imBuffer,0,0,this); X = 200 + (int)(180*Math.sin(SinX)); SinX+=SinOffX; Y = 120 - (int)(Math.abs(120*Math.sin(SinY))); SinY+=SinOffY; grBuffer.setColor(getBackground()); grBuffer.fillRect(0,0,400,150); grBuffer.setColor(Color.blue); grBuffer.fillOval(X,Y,20,20); } public void update(Graphics g) { paint(g); } public void start() { if (Animation == null) { Animation = new Thread(this); Animation.start(); } } public void stop() { if (Animation != null) { Animation = null; } } public void run() { while (true) { try { Animation.sleep(40); } catch(Exception e) { } repaint(); } } }