Hem E-böcker Specialeffekter och spelutveckling i Java Appleten SpacePiratesStep 2

Specialeffekter och spelutveckling i Java(TM) - Appleten SpacePirates Step 2

import java.applet.*;
import java.awt.*;

public class spacepiratesstep2 extends Applet implements Runnable {

public Thread programthread = null;
int sleeptime=60;
Image policeship[];
Image bufferimage;
Graphics bufferg;
int y0;
int v=0, py=0;

public void init()
{
    Dimension d=size();
    bufferimage=createImage(d.width,d.height);
    bufferg=bufferimage.getGraphics();

    policeship=new Image[5];
    MediaTracker tracker=new MediaTracker(this);
    for (int i=0; i<5; i++)
    {
        policeship[i]=getImage(getDocumentBase(),"policeship"+i+".gif");
        tracker.addImage(policeship[i],i);
    }
    try {tracker.waitForAll();}
    catch(InterruptedException e)
    {
        System.out.println("Någonting stoppade inladdningen...");
    }

    py=150;
}

public boolean mouseMove(Event e, int x, int y)
{
    y0=y;
    return true;
}

public synchronized void paint(Graphics g)
{
    if (bufferimage!=null) g.drawImage(bufferimage,0,0,this);
}

public void start()
{
    if (programthread == null)
    {
         programthread = new Thread(this,"programthread");
         programthread.start();
    }
}

public void stop()
{
    if ((programthread != null) && programthread.isAlive())
        programthread.stop();
    programthread = null;
}

public void update(Graphics g)
{
    paint(g);
}

public void run()
{
    while (true)
    {
        //Om muspekaren pekar ovanför skeppet
        //så accelerera nedåt, bromsa när skeppet
        //kommer nära muspekarens position.
        if (y0-py>0)
        {
            v++;
            if (y0-py<10) v=3;
            if (y0-py<5) v=1;
        }

        //Om muspekaren pekar nedanför skeppet
        //så accelerera uppåt, bromsa när skeppet
        //kommer nära muspekarens position.
        if (y0-py<0)
        {
            v--;
            if (y0-py>-10) v=-3;
            if (y0-py>-5) v=-1;
        }

        if (y0-py==0) v=0;
        if (v<-4) v=-4;
        if (v>4) v=4;
        py+=v;
        bufferg.setColor(Color.black);
        bufferg.fillRect(0,0,400,300);
        bufferg.drawImage(policeship[2+v/2],0,-55+py,this);
        update(getGraphics());
        try {Thread.sleep(sleeptime);}
        catch(InterruptedException e) {}
    }
}

}