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

📄 pacsprite.java

📁 Java吃豆子游戏
💻 JAVA
字号:
package org.loon.test;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.ImageObserver;

/**
 * 
 * <p>Title: LoonFramework</p>
 * <p>Description:</p>
 * <p>Copyright: Copyright (c) 2008</p>
 * <p>Company: LoonFramework</p>
 * <p>License: http://www.apache.org/licenses/LICENSE-2.0</p>
 * @author chenpeng  
 * @email:ceponline@yahoo.com.cn 
 * @version 0.1
 */
public class PacSprite extends Sprite {
	Image img;

	boolean ispower;

	int powerc;

	int vx, vy;

	int cx, cy;

	int cx0, cy0;

	int m;

	int p;

	int timer;

	int key;

	public PacSprite(int cx, int cy, CGloader loader) {
		super(cx << 3, cy << 3, 8, 8);
		setCGloader(loader);
		setOrientation(2, 2, 4, 4);
		cx0 = cx;
		cy0 = cy;
	}

	public void init(int cx, int cy) {
		this.cx = cx;
		this.cy = cy;
		x = cx << 3;
		y = cy << 3;
		vx = cx << 7;
		vy = cy << 7;
		m = 0;
		d = 4;
		p = 2;

		ispower = false;
		powerc = 0;
		timer = 0;
	}

	public void init() {
		init(cx0, cy0);
	}

	public void setCXCY(int cx, int cy) {
		this.cx = cx;
		this.cy = cy;
		x = cx << 3;
		y = cy << 3;
		vx = cx << 7;
		vy = cy << 7;
	}

	public void setKey(int key) {
		this.key = key;
	}

	public void setP(int p) {
		this.p = p;
	}

	public int getX() {
		return vx >> 4;
	}

	public int getY() {
		return vy >> 4;
	}

	public int getD() {
		return d;
	}

	public int getCX() {
		return vx >> 7;
	}

	public int getCY() {
		return vy >> 7;
	}

	public void powerup() {
		this.ispower = true;
		powerc = 480;
	}

	public boolean isPower() {
		return ispower;
	}

	public int abs(int n) {
		if (n < 0)
			return -n;
		else
			return n;
	}

	public int run(MazeManager manager, MapManager emanager) {
		int mask;
		int ret = 0;
		if (ispower)
			if ((powerc--) <= 0)
				ispower = false;

		if ((m <= 0) || (m >= 128)) {
			m = 0;
			cx = vx >> 7;
			cy = vy >> 7;
			ret = emanager.eatmap2(cx, cy);

			if (key > 0) {
				int dd = manager.onWay2(cx + cy * 21, key) & key;
				if (dd > 0)
					d = dd;
			}
			mask = manager.onWay2(cx + cy * 21, d);
			d = d & mask;
			if (cy == 13)
				manager.openTunnel();
			else
				manager.closeTunnel();
		} else {
			if ((key == 1) && (d == 4)) {
				d = 1;
				m = 128 - m;
			} else if ((key == 4) && (d == 1)) {
				d = 4;
				m = 128 - m;
			} else if ((key == 2) && (d == 8)) {
				d = 2;
				m = 128 - m;
			} else if ((key == 8) && (d == 2)) {
				d = 8;
				m = 128 - m;
			}
		}
		build();
		this.x = vx >> 4;
		this.y = vy >> 4;
		return ret;
	}

	public void build() {
		int dd;
		if (d > 0) {
			if (ispower)
				dd = 12;
			else
				dd = 10;
			if ((m + dd) > 128)
				dd = 128 - m;
			switch (d) {
			case 1:
				vx += dd;
				if (vx >= 2560)
					vx = 0;
				p = 0;
				break;
			case 4:
				vx -= dd;
				if (vx < 0)
					vx = 2560;
				p = 2;
				break;
			case 2:
				vy += dd;
				p = 1;
				break;
			case 8:
				vy -= dd;
				p = 3;
				break;
			}
			switch (((timer++) >> 2) % 4) {
			case 1:
				p += 4;
				break;
			case 3:
				p = 8;
				break;
			}

			m += dd;
		}
	}

	public void paint(Graphics g, ImageObserver observer) {
		img = loader.crop(14 * p, 46, 14, 14);
		g.drawImage(img, x - 3 + 8, y - 3 + 8, 14, 14, observer);
	}
}

⌨️ 快捷键说明

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