import java.awt.*;
import java.awt.image.*;

class Sprite extends Raster {
  int x,y;

  /////////////////////// Constructors ///////////////////////

 
  /* Default constructor */

  public Sprite()
  {
  }
  
  /* Constructor to create a Sprite initialized from an image */

  public Sprite(Image img)
  {
    super(img);
  }

  //////////////////////////// Methods///////////////////////////

  /**
   * Method to draw the sprite on a background.
   * Out of range portions of sprite are clipped, 
   * Transparent pixels are ignored */ 

  public void Draw(Raster bgnd)
  {
    int [] pixels;
    pixels = getPixels();
    
    for (int i = 0; i < width; i++)
      if (i+x >=0 && i+x < bgnd.getWidth())  /* check if x-coor is in range */
	for (int j = 0; j < height; j++)
	  if (j+y >= 0 && j+y < bgnd.getHeight()) /* check if y-coor in range*/
	    {
	      int pix = pixels[j*width+i];
	      int alpha = (pix >> 24) & 0xff ;
	      if (alpha != 0)  /* check for transparency*/
		bgnd.setPixel(pix, i+x, j+y);
	    }
  }

  /**
   *  Sets the relative (x,y) position of sprite in background
   */

  public void setXY(int x, int y)
  {
    this.x = x;
    this.y = y;
  }

  /**
   *  Access relative (x,y) positions
   */

  public int getX()
  {
    return x;
  }

  public int getY()
  {
    return y;
  }

} 








