⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 framecanvas.java

📁 J2ME手机游戏的矿架程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
      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 + -