📄 pacsprite.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 + -