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) {}
}
}
} |
 |  |
|