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

public class project1 extends Applet implements Runnable
{
	Playfield myfield;
	Sprite sprite1, sprite2;
	Image buffer;
	Thread animate;
	boolean animon;
	
	/**
	 * startup code for testSprite
	 *
	 */
	public void init( )
	{
		Image img1,img2,img2a;
  		Raster tmpRast;
	
		img1=getImage(getDocumentBase(),"background.jpg");
		myfield=new Playfield(img1,2);

		img2=getImage(getDocumentBase(),"kilroy.gif");
		sprite1=new Sprite(img2,200,400,50,50);

		img2a=getImage(getDocumentBase(),"kilroyalpha.gif"); // set alpha
		tmpRast=new Raster(img2a);
		sprite1.setAlpha(tmpRast);
		
		img2=getImage(getDocumentBase(),"button.gif");
		sprite2=new Sprite(img2,50,100,50,38);
		
		img2a=getImage(getDocumentBase(),"buttonalpha.gif");
		tmpRast=new Raster(img2a);
		sprite2.setAlpha(tmpRast);

		myfield.addSprite(0,sprite1);
		myfield.addSprite(1,sprite2);
    		renderPlayfield();
		start();
	}
	
	public void start( )
	{
		animate=new Thread(this);	// fire up the thread!
		animate.start();
		animon=true;
	}

	public void stop( )
	{
		animate=null;	// release the thread
	}

	public void run( )
	{
		for(int i=0;i<10;i++)
		{
			try
			{
				animate.sleep(50);
			}
			catch(InterruptedException e)
			{}
			sprite1.setXY(sprite1.getX(),sprite1.getY()-10);
			renderPlayfield();
		}
		for(int i=0;i<10;i++)
		{
			try
			{
				animate.sleep(50);
			}
			catch(InterruptedException e)
			{}
			sprite1.setXY(sprite1.getX(),sprite1.getY()+10);
			renderPlayfield();
		}
		animon=false;
	}
	
	public void renderPlayfield( )
	{
		myfield.draw();
		buffer=myfield.toImage();
		repaint();
	}
	
	public void paint(Graphics g)
	{
	    g.drawImage(buffer,0,0,this);
	}
	
	public void update(Graphics g)
	{
	    g.drawImage(buffer,0,0,this);
	}

	public boolean mouseDown(Event e, int x, int y)
	{
		if(sprite2.activePixelP(x,y))
		{	// we are on the button
			if(!animon) // no active thread
				start();
			return true;
		}

		sprite2.setXY(x,y);
		renderPlayfield();
		return true;
	}
}
