⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sprite.java

📁 本代码为java编写的泡泡龙游戏
💻 JAVA
字号:

import java.awt.*;

/*
  精灵对象代表一个可操作、可显示的对象,可以是图片等待
 */
public abstract class Sprite
{
	//新位置
	private Rectangle spriteArea;
	//旧位置
	private Rectangle oldSpriteArea;
	//是否需要重新显示
	private boolean refreshNeeded;
	//构造函数
	public Sprite(Rectangle spriteArea)
	{	
		this.spriteArea = spriteArea;
		this.oldSpriteArea = spriteArea;
		refreshNeeded = true;
	}
	//设置需要重新显示
	public final void forceRefresh()
	{
		refreshNeeded = true;
	}
	//改变精灵的位置
	public void changeSpriteArea(Rectangle newArea)
	{
		spriteArea = newArea;
		refreshNeeded = true;
	}
	//相对移动精灵
	public final void relativeMove(Point p)
	{
		spriteArea = new Rectangle(spriteArea);
		spriteArea.translate(p.x, p.y);
		refreshNeeded = true;
	}
	//相对移动精灵
	public final void relativeMove(int x, int y)
	{
		spriteArea = new Rectangle(spriteArea);
		spriteArea.translate(x, y);
		refreshNeeded = true;
	}
	//绝对移动精灵
	public final void absoluteMove(Point p)
	{
		spriteArea = new Rectangle(p, new Dimension(spriteArea.width, spriteArea.height));
		refreshNeeded = true;
	}
	//绝对移动精灵
	public final void absoluteMove(int x, int y)
	{
		spriteArea = new Rectangle(x, y, spriteArea.width, spriteArea.height);
		refreshNeeded = true;
	}
	//得到精灵位置的左上角坐标
	public final Point getSpritePosition()
	{
		return spriteArea.getLocation();
	}
	//得到精灵的位置
	public final Rectangle getSpriteArea()
	{
		return spriteArea;
	}
	//刷新精灵,即从内存缓存图片中清除此精灵
	public final void refresh(Image background, Graphics output, GameApplet applet)
	{
		if (refreshNeeded)
		{
			output.setClip(oldSpriteArea.x, oldSpriteArea.y, oldSpriteArea.width, oldSpriteArea.height);
			output.drawImage(background, 0, 0, applet);
			oldSpriteArea = spriteArea;
			
			refreshNeeded = false;
		}
	}
	//重新显示精灵
	public abstract void paint(Graphics g, GameApplet applet);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -