📄 framecanvas.java
字号:
case 41:
case 42:
man.frame++;
if(man.frame==43)
{
if(_inMap_canGo_down(man.x,man.y,man.w,man.h)==1)
{
man.frame=14;
}
else
{
man.frame=0;
}
}
for(int i=0;i<6;i++)
if(man.face==right && _inMap_canGo_right(man.x,man.y,man.w,man.h)==1)
{
man.x+=man.LRSp/2;
}
else if(man.face==left && _inMap_canGo_left(man.x,man.y,man.w,man.h)==1)
{
man.x-=man.LRSp/2;
}
else
{
if(_inMap_canGo_down(man.x,man.y,man.w,man.h)==1)
{
man.frame=14;
}
else
{
man.frame=0;
}
}
return 0;
}
if(!(man.frame>7 && man.frame<12))
{
for(byte j=0;j<Math.abs(man.UDSp);j++)
{
if(man.UDSp<0
&& _inMap_canGo_up(man.x,man.y,man.w,man.h)==1)
{
man.y--;
}
else if(man.UDSp>=0
&& _inMap_canGo_down(man.x,man.y,man.w,man.h)==1)//如果踩空
{
man.y++;
}
else if(man.UDSp<0)
{
man.UDSp=0;
if(man.frame>20 && man.frame<24)//jump att
{
}
else if(man.frame!=15)
{
man.frame=14;
}
}
else if(man.UDSp>=0)//站地上
{
man.UDSp=0;
if(man.frame==15)
{
man.frame++;
}
else
{
man.frame=0;
}
man.canJump=man.max_jump;
}
}
if(_inMap_canGo_down(man.x,man.y,man.w,man.h)==1)//如果踩空
{
if(man.frame>20 && man.frame<24)//jump att
{
//System.out.println("jump att");
}
else if(man.UDSp>0 && man.frame!=15)
{
man.frame=14;
}
man.UDSp+=Gravity;
}
else if(man.frame==12 || man.frame==13)
{
if(man.frame==15)
{
man.frame++;
}
else
{
man.frame=0;
}
}
}
else
{
for(byte j=0;j<3;j++)
{
if(_inMap_canGo_down(man.x,man.y,man.w,man.h)==1)//如果踩空
{
man.y++;
}
else if(man.UDSp>=0)//站地上
{
man.UDSp=0;
if(man.frame==15)
{
man.frame++;
}
else
{
man.frame=0;
}
man.canJump=man.max_jump;
}
}
}
return 0;
}
//==============================================================================
private void _doFood(int i)
{
boolean hitMan=_hit(man.x-man.w/2+(man.face-right)*(man.w-imgD_XY[man.frame][2]),
man.y-man.h,
imgD_XY[man.frame][2],
imgD_XY[man.frame][3],
monster[i].x-8+1,
monster[i].y-imgMonster_XY[monster[i].who][monster[i].frame][1],
imgMonster_XY[monster[i].who][monster[i].frame][0]-2,
imgMonster_XY[monster[i].who][monster[i].frame][1]);
if(hitMan)
{
switch(monster[i].face)
{
case 0://+blood
man.blood=man.max_blood;
break;
case 1://+magic
man.magic=man.max_magic;
break;
}
// if(man.blood>man.max_blood)
// {
// man.blood=man.max_blood;
// }
monster[i].who=99;//吃掉了就没有了
}
}
//------------------------------------------------------------------------------
private boolean _dogCanGo(int i,int whereWantToGo)
{
if(whereWantToGo==right)
{
if(_inMap_canGo_right(monster[i].x,monster[i].y,monster[i].w,monster[i].h)==1
&&
_inMap_canGo_down(monster[i].x+36,monster[i].y,monster[i].w,monster[i].h)==0
&&
map[(monster[i].y)/mapCellH-1][(monster[i].x+monster[i].w/2)/mapCellW]!=man.mapCellCanGo-1)
{
return true;
}
else
{
return false;
}
}
else
{
if(_inMap_canGo_left(monster[i].x,monster[i].y,monster[i].w,monster[i].h)==1
&&
_inMap_canGo_down(monster[i].x-36,monster[i].y,monster[i].w,monster[i].h)==0
&&
map[(monster[i].y)/mapCellH-1][(monster[i].x-monster[i].w/2)/mapCellW]!=man.mapCellCanGo-1)
{
return true;
}
else
{
return false;
}
}
// return true;
}
private boolean _isManFaceToMonster(int i)
{
if((man.x<monster[i].x && man.face==left) ||
(man.x>monster[i].x && man.face==right))
{
return false;
}
return true;
}
private void _monsterHurt(int i)
{
if(man.frame>17 && man.frame<22)
{
monster[i].blood--;
}
else if(man.frame>21 && man.frame<25)
{
monster[i].blood-=2;
}
else if(man.frame>24 && man.frame<31)
{
monster[i].blood-=4;
}
else if(man.frame>30 && man.frame<36)
{
monster[i].blood-=6;
}
else
{
monster[i].blood-=2;
}
}
private int _doMonsterKnife(int i)
{
int returnData=_getRandomNumInTwo(0,100);
boolean hitMan=_hit(man.x-man.w/2,man.y-man.h,
man.w,man.h,
monster[i].x-monster[i].w/2,
monster[i].y-monster[i].h,
monster[i].w+(monster[i].who==0? 6:0),monster[i].h);
boolean hitMan_atY=_hit(123,man.y-man.h,
man.w,man.h,
123,
monster[i].y-monster[i].h,
monster[i].w,monster[i].h);
boolean hitHurtMonster=_hit(man.x-man.w/2+(man.face-right)*(man.w-imgD_XY[man.frame][2]),
man.y-man.h,
imgD_XY[man.frame][2],
imgD_XY[man.frame][3],
monster[i].x-monster[i].w/2,
monster[i].y-monster[i].h,
monster[i].w,monster[i].h);
boolean hitHurtMan=_hit(man.x-man.w/2+(man.face-right)*(man.w-imgD_XY[man.frame][2]),
man.y-man.h,
imgD_XY[man.frame][2],
imgD_XY[man.frame][3],
monster[i].x-monster[i].w/2+(monster[i].face-right)*
(monster[i].w-imgMonster_XY[monster[i].who][monster[i].frame][1]),
monster[i].y-monster[i].h,
imgMonster_XY[monster[i].who][monster[i].frame][1],monster[i].h);
if((man.x>monster[i].x && monster[i].face==left ) ||
(man.x<monster[i].x && monster[i].face==right))
{
hitHurtMan=false;
}
else if(monster[i].who==0 && man.y==monster[i].y && Math.abs(man.x-monster[i].x)<48)
{
hitHurtMan=true;
}
//monster挨打
if(_isManFaceToMonster(i))
if(!(monster[i].frame<15 && monster[i].frame>11))
if(hitHurtMonster && man.frame>17 && man.frame<44)
{
monster[i].face=(byte)((man.face-right+1)%2+right);
//dec blood
_monsterHurt(i);
if(monster[i].face==left)
{
if(_inMap_canGo_right(monster[i].x,monster[i].y,monster[i].w,monster[i].h)==1
&&
_inMap_canGo_down(monster[i].x+16,monster[i].y,monster[i].w,monster[i].h)==0)
{
monster[i].x+=4;
}
}
else
{
if(_inMap_canGo_left(monster[i].x,monster[i].y,monster[i].w,monster[i].h)==1
&&
_inMap_canGo_down(monster[i].x-16,monster[i].y,monster[i].w,monster[i].h)==0)
{
monster[i].x-=4;
}
}
if(monster[i].frame!=10 && gameTime%2==0)
{
monster[i].frame=10;
}
}
else if(hitMan_atY)//Y方向hit
{ //face to man
if(returnData<20)
if(monster[i].x>man.x && monster[i].face==right)
{
monster[i].face=left;
monster[i].frame=0;
}
else if(monster[i].x<man.x && monster[i].face==left)
{
monster[i].face=right;
monster[i].frame=0;
}
//have to att?
if(Math.abs(monster[i].x-man.x)<40)
{
if(!(monster[i].frame>6 && monster[i].frame<10))
if(returnData<40)
{
monster[i].frame=7;
}
else
{
monster[i].frame=4;
monster[i].face=(byte)((monster[i].face-2+1)%2+2);
}
}
}
if(monster[i].blood<1 &&
monster[i].frame!=12 &&
monster[i].frame!=13 &&
monster[i].frame!=14)
{
monster[i].frame=12;
}
switch(monster[i].frame)
{
case 0://stop
case 1:
case 2:
case 3:
if(!hitMan_atY)//Y方向hit==false
{
monster[i].frame=4;//溜达
}
else//Y方向hit==true
{
if(returnData<20)
{
monster[i].frame=4;
if(hitMan)
{
monster[i].face=(byte)((monster[i].face-2+1)%2+2);
}
}
else//stop
{
if(gameTime%3==0)
monster[i].frame=(byte)((monster[i].frame+1)%4);
}
}
break;
case 10://hurt
monster[i].frame++;
break;
case 11://hurt
if(monster[i].blood>0)// && gameTime%2==0)
{
monster[i].frame=0;
}
break;
case 12://die1
case 13://die1
monster[i].frame++;
break;
case 14://die
if(monster[i].hurt==0)
{
monster[i].hurt=11;
}
else if(monster[i].hurt>0)
{
monster[i].hurt--;
if(monster[i].hurt==0)
{
monster[i].who=99;
return 0;
}
}
break;
case 7://att
case 8:
case 9:
if(gameTime%3==0)
{
monster[i].frame++;
if(monster[i].frame>9)
{
monster[i].frame=0;
}
}
if(hitHurtMan && monster[i].frame==9)
{
man_Hurt(2,0);
man.face=(byte)((monster[i].face-right+1)%2+right);
}
break;
case 4://run
case 5:
case 6:
if(!hitMan ||
((monster[i].face==right && monster[i].x>man.x)
||
(monster[i].face==left && monster[i].x<man.x)))
{
if(monster[i].face==right)
{
if(_inMap_canGo_right(monster[i].x,monster[i].y,monster[i].w,monster[i].h)==1
&&
_inMap_canGo_down(monster[i].x+16,monster[i].y,monster[i].w,monster[i].h)==0)
{
monster[i].x+=4;
}
else
{
monster[i].face=left;
monster[i].frame=0;
monster[i].x-=(monster[i].who==0? 0:20);
}
}
else
{
if(_inMap_canGo_left(monster[i].x,monster[i].y,monster[i].w,monster[i].h)==1
&&
_inMap_canGo_down(monster[i].x-16,monster[i].y,monster[i].w,monster[i].h)==0)
{
monster[i].x-=4;
}
else
{
monster[i].face=right;
monster[i].frame=0;
monster[i].x+=(monster[i].who==0? 0:20);
}
}
monster[i].frame=(byte)((monster[i].frame-4+1)%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -