📄 enemy.java
字号:
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.Sprite;
public class Enemy extends Sprite
{
private int directStatus = 0;
private int currentFrame = 0;
private int lastDirectStatus = 0;
//走步计数器
private int upNumber = 0;
private int downNumber = 0;
private int leftNumber = 0;
private int rightNumber = 0;
//管理器
private WallManager wallManager = null;
//走步受阻标志
private boolean isStopped = false;
public Enemy(Image tempEnemyImage, WallManager tempWallManager)
{
super(tempEnemyImage, War.ENEMY_WIDTH, War.ENEMY_HEIGHT);
wallManager = tempWallManager;
}
private void setDirectStatus(int tempDirectStatus)
{
directStatus = tempDirectStatus;
lastDirectStatus = tempDirectStatus;
}
public int getDirectStatus()
{
return directStatus;
}
public void move()
{
moveCompute();
isStopped = false;
if (directStatus == 0)
{//上
if (directStatus == lastDirectStatus)
{
currentFrame = (currentFrame+1)%3;
}
else
{
currentFrame = 0;
}
move(0, -War.ENEMY_MID_RATE);
if (isLimited())
{
isStopped = true;
move(0, War.ENEMY_MID_RATE);
}
}
else if (directStatus == 1)
{
if (directStatus == lastDirectStatus)
{
currentFrame = 6 + (currentFrame - 6 + 1)%3;
}
else
{
currentFrame = 6;
}
move(0, War.ENEMY_MID_RATE);
if (isLimited())
{
isStopped = true;
move(0, -War.ENEMY_MID_RATE);
}
}
else if (directStatus == 2)
{
if (directStatus == lastDirectStatus)
{
currentFrame = 9 + (currentFrame - 9 + 1)%3;
}
else
{
currentFrame = 9;
}
move(-War.ENEMY_MID_RATE, 0);
if (isLimited())
{
isStopped = true;
move(War.ENEMY_MID_RATE, 0);
}
}
else
{
if (directStatus == lastDirectStatus)
{
currentFrame = 3 + (currentFrame - 3 + 1)%3;
}
else
{
currentFrame = 3;
}
move(War.ENEMY_MID_RATE, 0);
if (isLimited())
{
isStopped = true;
move(-War.ENEMY_MID_RATE, 0);
}
}
setFrame(currentFrame);
}
private void moveCompute()
{//每次使用setDirectStatus()后都要紧跟着使用return
if (directStatus == 0)
{//上
upNumber++;
if (isStopped)
{
setDirectStatus(3);
return;
}
}
else if (directStatus == 1)
{
downNumber++;
if (isStopped)
{
setDirectStatus(2);
return;
}
if (downNumber ==30)
{
downNumber = 0;
setDirectStatus(3);
return;
}
}
else if (directStatus == 2)
{
leftNumber++;
if (isStopped)
{
setDirectStatus(0);
return;
}
setDirectStatus(3);
return;
}
else
{
rightNumber++;
if (isStopped)
{
setDirectStatus(1);
return;
}
if (rightNumber ==30)
{
rightNumber = 0;
setDirectStatus(1);
return;
}
}
}
private boolean isLimited()
{
//受墙阻挡
if (wallManager.collidesWith(this))
{
return true;
}
//受边界阻挡
if (getX() < War.WAR_FIELD_LEFT || getX() > War.WAR_FIELD_LEFT + War.WAR_FIELD_WIDTH - War.ENEMY_WIDTH || getY() < War.WAR_FIELD_TOP || getY() > War.WAR_FIELD_TOP + War.WAR_FIELD_HEIGHT - War.ENEMY_HEIGHT)
{//检查子弹是否超界
return true;
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -