📄 runsprite.java
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;
public class RunSprite extends Sprite {
private Random rand;
private int speed;
private TiledLayer barrier;
private Sprite Run;
private int aggression; // 0 - 10
public RunSprite(
Image image, int frameWidth, int frameHeight,
int RunSpeed, TiledLayer barrierLayer,
Sprite RunSprite,int aggressionLevel) {
// 调用父类的构造器
super(image, frameWidth, frameHeight);
// 初始化随机数生成器
rand = new Random();
// 设置追逐速度
speed = RunSpeed;
// 设置障碍物图层
barrier = barrierLayer;
// 设置被追逐精灵
Run = RunSprite;
// 设置攻击级别
aggression = aggressionLevel;
}
public void update() {
// 暂时保存当前位置
int xPos = getX();
int yPos = getY();
int xDis = getX() - Run.getX();
int yDis = getY() - Run.getY();
// 根据攻击级别追逐或随机移动
if (Math.abs(rand.nextInt() % (aggression + 10)) > 0) {
// 追逐被追逐的精灵
if (xDis > Run.getWidth() / 2)
move(speed, 0); // 向左追逐
else if (xDis < - getWidth() / 2)
move(-speed, 0); //向右追逐
if (yDis > Run.getHeight() / 2)
move(0, speed); // 向上追逐
else if (yDis < getHeight() / 2)
move(0, -speed); //向下追逐
}else { // 随机漂移
switch (Math.abs(rand.nextInt() % 4)) {
case 0: move(-speed, 0); break;//向左
case 1: move(speed, 0); break;//向右
case 2: move(0, -speed); break;//向上
case 3: move(0, speed); break;//向下
}
}
// 检查精灵是否与障碍物图层碰撞
if (barrier != null && collidesWith(barrier, true)) {
// 将精灵移回移动前的位置
setPosition(xPos, yPos);
}
// 显示精灵的下一帧
nextFrame();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -