📄 enemy.java
字号:
public void Reset()
{
super.Reset();
}
public void SelectAction(int pLocX, int pLocY)
{
int distance = FindDistance(pLocX, pLocY);
if(super.actionId != 6 && super.actionId != 7)
switch(GetType())
{
case 6: // '\006'
case 7: // '\007'
case 8: // '\b'
case 9: // '\t'
case 10: // '\n'
case 11: // '\013'
case 12: // '\f'
case 13: // '\r'
case 14: // '\016'
case 15: // '\017'
case 16: // '\020'
case 17: // '\021'
case 18: // '\022'
case 19: // '\023'
case 20: // '\024'
case 21: // '\025'
case 22: // '\026'
case 24: // '\030'
default:
break;
case 0: // '\0'
if(!ChangeAction(GameManager.Random(3) + 1))
break;
if(distance > 75)
SetDirection(GameManager.Random(4));
else
SetDirection(FindDirectionType1(pLocX, pLocY));
break;
case 1: // '\001'
if(distance > 130)
GameManager.Random(4);
else
if(distance < 80)
ChangeAction(2);
else
ChangeAction(1);
if(distance > 90)
{
SetDirection(GameManager.Random(4));
} else
{
int newDir = FindDirectionType2(pLocX, pLocY);
SetDirection(newDir == -1 ? GameManager.Random(4) : newDir);
}
break;
case 2: // '\002'
case 5: // '\005'
if(!ChangeAction(GameManager.Random(3) + 1))
break;
if(distance > 90)
SetDirection(GameManager.Random(4));
else
SetDirection(FindDirectionType3(pLocX, pLocY));
break;
case 3: // '\003'
if(distance > 150)
GameManager.Random(4);
else
if(distance < 100)
ChangeAction(2);
else
ChangeAction(1);
if(distance > 90)
{
SetDirection(GameManager.Random(4));
} else
{
int newDir = FindDirectionType3(pLocX, pLocY);
SetDirection(newDir == -1 ? GameManager.Random(4) : newDir);
}
break;
case 23: // '\027'
ChangeAction(GameManager.Random(3) + 1);
if(distance > 150)
{
SetDirection(GameManager.Random(4));
} else
{
int newDir = FindDirectionType3(pLocX, pLocY);
SetDirection(newDir == -1 ? GameManager.Random(4) : newDir);
}
break;
case 4: // '\004'
if(distance > 200)
ChangeAction(0);
else
if(distance < 20)
ChangeAction(3);
else
ChangeAction(1);
if(distance > 150)
{
SetDirection(GameManager.Random(4));
} else
{
int newDir = FindDirectionType3(pLocX, pLocY);
SetDirection(newDir == -1 ? GameManager.Random(4) : newDir);
}
break;
case 25: // '\031'
case 26: // '\032'
if(distance > 300)
ChangeAction(0);
else
if(distance < 10)
ChangeAction(3);
else
if(distance > 100)
{
if(super.gauge == 0)
super.gauge = GameManager.Random(200) - 100;
ChangeAction(2);
} else
{
ChangeAction(1);
}
if(distance > 150)
{
SetDirection(GameManager.Random(4));
break;
}
int newDir = 0;
if(super.gauge > 0)
{
super.gauge--;
newDir = FindDirectionType3(super.curLoc.GetX(), pLocY);
} else
if(super.gauge < 0)
{
super.gauge++;
newDir = FindDirectionType3(pLocX, super.curLoc.GetY());
} else
{
super.gauge = 0;
newDir = FindDirectionType3(pLocX, pLocY);
}
SetDirection(newDir == -1 ? GameManager.Random(4) : newDir);
break;
}
}
public int FindDirectionType1(int locX, int locY)
{
int disX = GetCenterLocationX() - locX;
int disY = GetCenterLocationY() - locY;
if(Math.abs(disX) < Math.abs(disY))
{
if(disX == 0)
return disY <= 0 ? 1 : 0;
return disX <= 0 ? 3 : 2;
}
if(disY == 0)
return disX <= 0 ? 3 : 2;
return disY <= 0 ? 1 : 0;
}
public int FindDirectionType2(int locX, int locY)
{
int disX = GetCenterLocationX() - locX;
int disY = GetCenterLocationY() - locY;
if(GameManager.Random(100) > 50)
{
if(disX == 0)
return disY <= 0 ? 1 : 0;
return disX <= 0 ? 3 : 2;
}
if(disY == 0)
return disX <= 0 ? 3 : 2;
return disY <= 0 ? 1 : 0;
}
public void DrawMessage(Graphics g, String msg[], int topPosX, int topPosY, int imgWidth, int imgHeight, int gap,
int msgColor, int backColor)
{
if(GetType() == 24 || GetType() == 23)
{
try
{
super.DrawMessage(g, msg, topPosX, topPosY, imgWidth, imgHeight, gap, msgColor, backColor);
}
catch(Exception e) { }
g.setClip(topPosX + gap, topPosY + gap, imgWidth, imgHeight);
g.drawImage(eImg, (topPosX - 72) + gap, (topPosY - 189) + gap, 20);
} else
{
try
{
super.DrawMessage(g, msg, topPosX, topPosY, imgWidth, imgHeight, gap, msgColor, backColor);
}
catch(Exception e) { }
}
}
public void Draw(Graphics g, int xOffset, int yOffset)
{
int width = super.actionImgWidth;
int height = super.curLoc.GetHeight();
int posX = xOffset + super.curLoc.GetX() + super.bodyOffsetX;
int posY = yOffset + super.curLoc.GetY();
if(GetAction() == 6)
{
g.setColor(super.damage >= 0 ? 65280 : 0xff0000);
g.setClip(0, 0, 176, 178);
g.drawString(String.valueOf(Math.abs(super.damage)), posX + width / 2, posY - 11, 20);
}
g.setClip(posX, posY, width, height);
switch(super.type)
{
case 6: // '\006'
g.drawImage(eImg, posX - 77, posY - 160, 20);
break;
case 0: // '\0'
g.drawImage(eImg, posX - super.drawImgId * width, posY, 20);
break;
case 1: // '\001'
g.drawImage(eImg, posX - super.drawImgId * width, posY - 24, 20);
break;
case 2: // '\002'
g.drawImage(eImg, posX - super.drawImgId * width, posY - 48, 20);
break;
case 3: // '\003'
g.drawImage(eImg, posX - super.drawImgId * width, posY - 72, 20);
break;
case 4: // '\004'
g.drawImage(eImg, posX - super.drawImgId * width, posY - 96, 20);
break;
case 5: // '\005'
if(super.actionId == 1 || super.actionId == 2)
{
if(super.actionScript > 2)
return;
g.drawImage(eImg, posX - super.actionScript * width, posY - 189, 20);
} else
{
g.drawImage(eImg, posX, posY - 189, 20);
}
break;
case 23: // '\027'
g.drawImage(eImg, posX - 58, posY - 120, 20);
break;
case 24: // '\030'
g.drawImage(eImg, posX, posY - 120, 20);
if(super.actionId == 6 || super.actionId == 7)
{
g.setClip(posX += 23, posY += 6, 15, 25);
g.drawImage(eImg, posX - 58, posY - 161, 20);
}
break;
case 25: // '\031'
if(super.actionId == 3)
g.drawImage(eImg, posX - 16, posY - 175, 20);
else
g.drawImage(eImg, posX, posY - 175, 20);
break;
case 26: // '\032'
DirectGraphics dg = DirectUtils.getDirectGraphics(g);
if(super.actionId == 3)
dg.drawImage(eImg, (posX - eImg.getWidth()) + width + 16, posY - 175, 20, 8192);
else
dg.drawImage(eImg, (posX - eImg.getWidth()) + width, posY - 175, 20, 8192);
break;
}
if(super.actionId == 6 || super.actionId == 7)
if(GetType() == 24)
{
for(int i = 0; i < 4; i++)
DrawExplosion(g, 1, GameManager.Random(GetWidth() / 3) + xOffset, GameManager.Random(GetHeight() / 3) + yOffset);
} else
if(super.actionId == 7)
DrawExplosion(g, 1, xOffset, yOffset);
else
DrawExplosion(g, 0, xOffset, yOffset);
}
static Image eImg = null;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -