📄 roleman.java
字号:
if(b.hp <= 0)
{
exp += b.getExp();
b.dead();
}
}
SpEffect bEffect = new SpEffect(hitX,hitY,SpEffect.BRUISE$BLOOD,SpEffect.BRUISE_1);
SpEffect bFont = new SpEffect((short)(e.roleX+10),(short)(e.roleY+20),SpEffect.FONT$BLOOD,SpEffect.REDUCE);
bFont.setEffect((byte)0);
bFont.setLoseBlooad(brHp);
CastleCanvas.effect.addElement(bEffect);
CastleCanvas.effect.addElement(bFont);
}
}
}
private void tickAll(Graphics g)
{
tickEffect(g);
tickBlood(g);
tickBullet(g);
tickResume();
tickLife();
// tickEnemy(g);TODO
}
private void tickLife() {
if(backHp == 0)
{
dead();
}
}
private void tickResume() {//恢复MP
if(!isResume)
{
isResume = true;
mpTimeStart = System.currentTimeMillis();
}
if(System.currentTimeMillis()-mpTimeStart>=reMpTime && backMp<=maxMp)
{
isResume = false;
for(byte i=0;i<=($int/4) && backMp<maxMp;i++)
{
backMp++;
}
}
}
/****判断怪物是否攻击的到主角,和伤害其他处理****/
private boolean isEnemyAttRole(Graphics g)
{
Enumeration v = CastleCanvas.enemy.elements();
while(v.hasMoreElements())
{
if(System.currentTimeMillis()-sAphal>=1500)
{
aphal = true;
}
Enemy e = (Enemy)v.nextElement();
if(e.attack() && aphal)
{
if(e instanceof BrawnMan)
{
BrawnMan b = (BrawnMan)e;
short brHp = (short)(b.att-CastleCanvas.soma.getDef());
if(brHp<1)
brHp = 1;
backHp -= brHp;
if(backHp<=0)
{
backHp = 0;
fCount = 0;
};
SpEffect r = new SpEffect(SpEffect.FONT$BLOOD,SpEffect.REDUCE);
r.setEffect((byte)1);
r.setLoseBlooad(brHp);
CastleCanvas.effect.addElement(r);
}
sAphal = System.currentTimeMillis();
aphal = false;
if(dir)
{
if(e.x+e.ox>=this.x+this.ox)
{
direction = 0;//FORE
}
else
{
direction = 1;//BACK
}
}
else
{
if(e.x+e.mirx>=this.x+this.mirx)
{
direction = 1;//BACK
}
else
{
direction = 0;//FORE
}
}
return true;
}
}
return false;
}
// private void tickEnemy(Graphics g) {
// Enumeration v = Castle.enemy.elements();
// while(v.hasMoreElements())
// {
// Enemy e = (Enemy)v.nextElement();
// if(e.isDead())
// {
// Castle.enemy.removeElement(e);
// }
// }
// }
private void tickBullet(Graphics g)
{
Enumeration v = shot.elements();
while(v.hasMoreElements())
{
Bullet b = (Bullet)v.nextElement();
if(b.isDead())
shot.removeElement(b);
b.paint(g);
Enumeration ev = CastleCanvas.enemy.elements();
while(ev.hasMoreElements())
{
Enemy e = (Enemy)ev.nextElement();
if(b.attEnemy(e))
{
short brHp = 0;
if(e instanceof Corpse)
{
Corpse c = ((Corpse)e);
brHp = (short)($int+currMainMagic.getPower()-c.def);//int+magic的att-c.def
if(brHp<=0)
brHp = 1;
c.hp -= brHp;
if(c.hp <= 0)
{//TODO
c.dead();
}
}
else if(e instanceof BrawnMan)
{
BrawnMan c = ((BrawnMan)e);
brHp = (short)($int+currMainMagic.getPower()-c.def);//int+magic的att-c.def
if(brHp<=0)
brHp = 1;
c.hp -= brHp;
if(c.hp <= 0)
{//TODO
c.dead();
}
}
else if(e instanceof Bat)
{
Bat c = ((Bat)e);
brHp = (short)($int+currMainMagic.getPower()-c.def);//int+magic的att-c.def
if(brHp<=0)
brHp = 1;
c.hp -= brHp;
if(c.hp <= 0)
{//TODO
c.dead();
}
}
SpEffect bEffect = new SpEffect(e.roleX,e.roleY,SpEffect.BRUISE$BLOOD,SpEffect.BRUISE_1);
SpEffect bFont = new SpEffect((short)(e.roleX+10),(short)(e.roleY+20),SpEffect.FONT$BLOOD,SpEffect.REDUCE);
bFont.setEffect((byte)0);
bFont.setLoseBlooad(brHp);
CastleCanvas.effect.addElement(bEffect);
CastleCanvas.effect.addElement(bFont);
}
}
}
}
private void tickEffect(Graphics g)
{
Enumeration v = CastleCanvas.effect.elements();
while(v.hasMoreElements())
{
SpEffect s = (SpEffect)v.nextElement();
s.paint(g);
if(s.getDelete())
CastleCanvas.effect.removeElement(s);
}
}
private void tickBlood(Graphics g)
{//TODO
g.setClip(8,20,101,29);
g.drawImage(CastleCanvas.itemEnum,8-68,20,CastleCanvas.imgLT);
g.setClip(37,26,64*getCurrentHpRatio()/100,3);//画HP
g.drawImage(CastleCanvas.itemEnum,37-71,26-32,CastleCanvas.imgLT);//画MP
g.setClip(37,31,64*getCurrentMpRatio()/100,3);
g.drawImage(CastleCanvas.itemEnum,37-71,31-37,CastleCanvas.imgLT);
short lb = 0;
byte count = 0;
lb = hp;
do
{
byte n = (byte)(lb%10);
g.setClip(23-count*6,26,8,8);
g.drawImage(CastleCanvas.itemEnum,23-(139+n*8)-count*6,26-43,CastleCanvas.imgLT);
count++;
}
while((lb/=10)!=0);
if(hp>backHp)
{
hp--;
}
else if(hp<backHp)//等于就不用修正
{
hp++;
}
if(mp>backMp)
{
mp--;
}
else if(mp<backMp)//等于就不用修正
{
mp++;
}
}
private boolean hitEnemy()
{
Enumeration v = CastleCanvas.enemy.elements();
while(v.hasMoreElements())
{
if(System.currentTimeMillis()-sAphal>=1500)
{
aphal = true;
}
Enemy e = (Enemy)(v.nextElement());
if(e.hit(this) && aphal)
{//TODO
short brHp = 0;
if(e instanceof Corpse)
{
Corpse c = (Corpse)e;
brHp = (short)(c.att-def);
}
else if(e instanceof BrawnMan)
{
BrawnMan c = (BrawnMan)e;
brHp = (short)(c.att-def);
}
else if(e instanceof Bat)
{
Bat c = (Bat)e;
brHp = (short)(c.att-def);
}
backHp = (short)(backHp - brHp);
if(backHp<=0)
{
backHp = 0;
fCount = 0;
}
SpEffect r = new SpEffect(SpEffect.FONT$BLOOD,SpEffect.REDUCE);
r.setEffect((byte)1);
r.setLoseBlooad(brHp);
CastleCanvas.effect.addElement(r);
sAphal = System.currentTimeMillis();
aphal = false;
if(dir)
{
if(e.x+e.ox>=this.x+this.ox)
{
direction = 0;//FORE
}
else
{
direction = 1;//BACK
}
}
else
{
if(e.x+e.mirx>=this.x+this.mirx)
{
direction = 1;//BACK
}
else
{
direction = 0;//FORE
}
}
return true;
}
}
return false;
}
public boolean getAphal()
{
return aphal;
}
public void hitFlick()
{
byte hStandard = 2;
if(fCount<hStandard)
{
roleY -= speed;
fCount++;
mapY = CastleCanvas.map.getPosY();
y = (short)(roleY-mapY);
}
if(direction == 0)
{
switch(roleState)
{
case RIGHT_AIR_HIT:
dir = false;
move();
if(fCount>=hStandard)
{
if(drop())
{
changState(RIGHT_DOWN_GROUND);
fCount = 0;
dir = true;
}
}
break;
case LEFT_AIR_HIT:
dir = true;
move();
if(fCount>=hStandard)
{
if(drop())
{
changState(LEFT_DOWN_GROUND);
fCount = 0;
dir = false;
}
}
break;
}
}
else
{
switch(roleState)
{
case LEFT_AIR_BACK_HIT:
dir = false;
move();
if(fCount>=hStandard)
{
if(drop())
{
changState(LEFT_DOWN_GROUND);
fCount = 0;
}
}
break;
case RIGHT_AIR_BACK_HIT:
dir = true;
move();
if(fCount>=hStandard)
{
if(drop())
{
changState(RIGHT_DOWN_GROUND);
fCount = 0;
}
}
break;
}
}
}
public void initJump()
{
curY = 0;
vY = speedY;
}
protected void dead()
{//DEAD TODO
if(dir)
{
if(roleState!=RIGHT_DEAD)
changState(RoleMan.RIGHT_DEAD);
roleX --;
}
else
{
roleX ++;
if(roleState!=LEFT_DEAD)
changState(RoleMan.LEFT_DEAD);
}
fCount++;
if(fCount<25)
roleY--;
else
roleY++;
mapX = CastleCanvas.map.getPosX();
mapY = CastleCanvas.map.getPosY();
x = (short)(roleX-mapX);
y = (short)(roleY-mapY);
}
public void paint(Graphics g)
{
switch(roleState)
{
case LEFT_STAND:
drawLeftStand(g);
if(!isTouchGroud())
changState(RoleMan.LEFT_CONTINUANCE_DROP);
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(LEFT_GROUND_LIGHTHIT);
break;
case 1://BACK
this.changState(LEFT_G_BACK_LIGHTHIT);
break;
}
}
break;
case RIGHT_STAND:
drawRightStand(g);
if(!isTouchGroud())
changState(RoleMan.RIGHT_CONTINUANCE_DROP);
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(RIGHT_GROUND_LIGHTHIT);
break;
case 1://BACK
this.changState(RIGHT_G_BACK_LIGHTHIT);
break;
}
}
break;
case L_TO_R_FRO:
drawLTOR(g);
if(hitEnemy() || isEnemyAttRole(g))
{
this.changState(RIGHT_GROUND_LIGHTHIT);
}
break;
case R_TO_L_FRO:
drawRTOL(g);
if(hitEnemy() || isEnemyAttRole(g))
{
this.changState(LEFT_GROUND_LIGHTHIT);
}
break;
case LEFT_WALK:
drawLeftWalk(g);
if(!isTouchGroud())
{
changState(RoleMan.LEFT_CONTINUANCE_DROP);//如要完善,需要替换
}
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(LEFT_GROUND_LIGHTHIT);
break;
case 1://BACK
this.changState(LEFT_G_BACK_LIGHTHIT);
break;
}
}
break;
case RIGHT_WALK:
drawRightWalk(g);
if(!isTouchGroud())
changState(RoleMan.RIGHT_CONTINUANCE_DROP);
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(RIGHT_GROUND_LIGHTHIT);
break;
case 1://BACK
this.changState(RIGHT_G_BACK_LIGHTHIT);
break;
}
}
break;
case LEFT_TO_STOP:
drawLeftStop(g);
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(LEFT_GROUND_LIGHTHIT);
break;
case 1://BACK
this.changState(LEFT_G_BACK_LIGHTHIT);
break;
}
}
break;
case RIGHT_TO_STOP:
drawRightStop(g);
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(RIGHT_GROUND_LIGHTHIT);
break;
case 1://BACK
this.changState(RIGHT_G_BACK_LIGHTHIT);
break;
}
}
break;
case LEFT_READY_RELEASE:
drawLeftReadyMagic(g);
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(LEFT_GROUND_LIGHTHIT);
break;
case 1://BACK
this.changState(LEFT_G_BACK_LIGHTHIT);
break;
}
}
break;
case RIGHT_READY_RELEASE:
drawRightReadyMagic(g);
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(RIGHT_GROUND_LIGHTHIT);
break;
case 1://BACK
this.changState(RIGHT_G_BACK_LIGHTHIT);
break;
}
}
break;
case LEFT_ORIGIN_JUMP:
drawLeftOriJump(g);
if(originJump())
{
vY = speedY;
this.changState(RoleMan.LEFT_CONTINUANCE_DROP);
}
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(LEFT_AIR_HIT);
break;
case 1://BACK
this.changState(LEFT_AIR_BACK_HIT);
break;
}
initJump();
}
break;
case RIGHT_ORIGIN_JUMP:
drawRightOriJump(g);
if(originJump())
{
vY = speedY;
this.changState(RoleMan.RIGHT_CONTINUANCE_DROP);
}
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(RIGHT_AIR_HIT);
break;
case 1://BACK
this.changState(RIGHT_AIR_BACK_HIT);
break;
}
initJump();
}
break;
case LEFT_JUMP:
drawLeftJump(g);
if(originJump())
{
vY = speedY;
this.changState(RoleMan.LEFT_CONTINUANCE_DROP);
}
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(LEFT_AIR_HIT);
break;
case 1://BACK
this.changState(LEFT_AIR_BACK_HIT);
break;
}
initJump();
}
break;
case RIGHT_JUMP:
drawRihgtJump(g);
if(originJump())
{
vY = speedY;
this.changState(RoleMan.RIGHT_CONTINUANCE_DROP);
}
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(RIGHT_AIR_HIT);
break;
case 1://BACK
this.changState(RIGHT_AIR_BACK_HIT);
break;
}
initJump();
}
break;
case LEFT_START_DROP:
drop();
drawLeftStartDrop(g);
if(hitEnemy() || isEnemyAttRole(g))
{
switch(direction)
{
case 0://FORE
this.changState(LEFT_AIR_HIT);
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -