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

📄 gameplay.java~197~

📁 J2ME游戏引擎,直接在JBUILDER2006下运行,不包含需要的SDK和虚拟机
💻 JAVA~197~
📖 第 1 页 / 共 2 页
字号:
                                        X_intMan + speedX + 3,
                                        Y_intMan + speedY + 20,
                                        m_Map.MapblockSize,
                                        m_Map.MapblockSize))
                 {
                     m_Map.Rool = false;
                     return false;
                 }
         }
     }
       m_Map.Rool=true;
       return true;
    }
 //主角位置相关属性
    int X_intMan=140;//地图坐标系的坐标
    int Y_intMan=100;//地图坐标系的坐标
    int Man_Speed=5;//主角移动速度
    public void Drawman()//主角绘制
    {
        if(animationx.Current_station==-1)
        {
            if (m_Map.RollToLeft)
            {
                animation = animationx.Left_run;
                if (X_intMan - m_Map.MapX < Man_Speed && X_intMan > Man_Speed)
                {if (Brock_check( -m_Map.MapMoveSpeed, 0))
                    X_intMan = X_intMan - m_Map.MapMoveSpeed;
                }
                else if (X_intMan > Man_Speed)
                {
                    if (Brock_check( -Man_Speed, 0))
                        X_intMan = X_intMan - Man_Speed;
                }
            }
            else if (m_Map.RollToRight)
            {
                animation = animationx.right_run;
                if (X_intMan - m_Map.MapX >
                    m_View.m_i_ScreenWidth - Man_Speed - m_Map.MapblockSize &&
                    X_intMan < (m_Map.m_i_MapWidth - 1) * m_Map.MapblockSize)
                {
                    if (Brock_check(m_Map.MapMoveSpeed, 0))
                        X_intMan = X_intMan + m_Map.MapMoveSpeed;
                }
                else if (X_intMan <
                         (m_Map.m_i_MapWidth - 1) * m_Map.MapblockSize)
                {
                    if (Brock_check(Man_Speed, 0))
                        X_intMan = X_intMan + Man_Speed;
                }
            }
            else if (m_Map.RollToUp)
            {
                animation = animationx.up_run;
                if (Y_intMan - m_Map.MapY < Man_Speed && Y_intMan > Man_Speed)
                {
                    if (Brock_check(0, -m_Map.MapMoveSpeed))
                        Y_intMan = Y_intMan - m_Map.MapMoveSpeed;
                }
                else if (Y_intMan > Man_Speed)
                {
                    if (Brock_check(0, -Man_Speed))
                        Y_intMan = Y_intMan - Man_Speed;
                }
            }
            else if (m_Map.RollToDown)
            {
                animation = animationx.down_run;
                if (Y_intMan - m_Map.MapY >
                    m_View.m_i_ScreenHeight - Man_Speed - m_Map.MapblockSize &&
                    Y_intMan < (m_Map.m_i_MapHeight - 1) * m_Map.MapblockSize)
                {
                    if (Brock_check(0, m_Map.MapMoveSpeed))
                        Y_intMan = Y_intMan + m_Map.MapMoveSpeed;
                }
                else if (Y_intMan <
                         (m_Map.m_i_MapHeight - 1) * m_Map.MapblockSize)
                {
                    if (Brock_check(0, Man_Speed))
                        Y_intMan = Y_intMan + Man_Speed;
                }
            }
            int image_x = animationx.Animation_run(animation);
            switch (animation)
            {
                case 0:
                case 4:
                    m_View.Blt(X_intMan - m_Map.MapX, Y_intMan - m_Map.MapY,
                               animationx.getwidth(animation),
                               animationx.getheight(animation),
                               image_x, 0, m_Surface_left);
//             m_View.m_g_BackGraphy.setColor(255);
//            m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX-30,Y_intMan-m_Map.MapY+20,16,16);

                    break;
                case 1:
                case 5:
                    m_View.Blt(X_intMan - m_Map.MapX, Y_intMan - m_Map.MapY,
                               animationx.getwidth(animation),
                               animationx.getheight(animation),
                               image_x, 0, m_Surface_right);
//         m_View.m_g_BackGraphy.setColor(255);
//         m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+65,Y_intMan-m_Map.MapY+20,16,16);

                    break;
                case 2:
                case 6:
                    m_View.Blt(X_intMan - m_Map.MapX - 7,
                               Y_intMan - m_Map.MapY + 1,
                               animationx.getwidth(animation),
                               animationx.getheight(animation),
                               image_x, 0, m_Surface_up);
//                m_View.m_g_BackGraphy.setColor(255);
//             m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX-30,Y_intMan-m_Map.MapY+20,16,16);

                    break;
                case 3:
                case 7:
                    m_View.Blt(X_intMan - m_Map.MapX - 7,
                               Y_intMan - m_Map.MapY + 1,
                               animationx.getwidth(animation),
                               animationx.getheight(animation),
                               image_x, 0, m_Surface_down);
//        m_View.m_g_BackGraphy.setColor(255);
//        m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+65,Y_intMan-m_Map.MapY+20,16,16);

                    break;

            }
        }
        else
        {
            int image_x = animationx.Animation_ACT(animationx.Current_station);
           // int image_x = animationx.Animation_run(animation);
           int remove_X=0;
           if(image_x<100)
           remove_X=35;
            switch (animationx.Current_station)
            {
                case 0:
                case 4:
                    m_View.Blt(X_intMan - m_Map.MapX-38+remove_X, Y_intMan - m_Map.MapY-15,
                               animationx.getwidth(8),
                               animationx.getheight(8),
                               image_x, 0, m_Surface_ACT_left);
//        m_View.m_g_BackGraphy.setColor(255);
//        m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX-20,Y_intMan-m_Map.MapY+15,16,21);

                    break;
                case 1:
                case 5:
                    m_View.Blt(X_intMan - m_Map.MapX-25, Y_intMan - m_Map.MapY-15,
                               animationx.getwidth(9),
                               animationx.getheight(9),
                               image_x, 0, m_Surface_ACT_right);
//        m_View.m_g_BackGraphy.setColor(255);
//        m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+30,Y_intMan-m_Map.MapY+10,16,21);

                    break;
                case 2:
                case 6:
                    m_View.Blt(X_intMan - m_Map.MapX - 7-38+remove_X,
                               Y_intMan - m_Map.MapY + 1-15,
                               animationx.getwidth(10),
                               animationx.getheight(10),
                               image_x, 0,  m_Surface_ACT_left);
//                m_View.m_g_BackGraphy.setColor(255);
//             m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX-20,Y_intMan-m_Map.MapY+15,16,21);

                    break;
                case 3:
                case 7:
                    m_View.Blt(X_intMan - m_Map.MapX -7-25,
                               Y_intMan - m_Map.MapY + 1-15,
                               animationx.getwidth(11),
                               animationx.getheight(11),
                               image_x, 0, m_Surface_ACT_right);
//        m_View.m_g_BackGraphy.setColor(255);
//        m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+30,Y_intMan-m_Map.MapY+10,16,21);

                    break;

            }

        }
//        m_View.m_g_BackGraphy.setColor(255);
//        m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX,Y_intMan-m_Map.MapY,16,16);
    }
   int npcimageX[]=new int[2];
   int shine[]={0,0};
   int hit[]={0,0};
    public void DrawNPC()//绘制NPC
    {

        for(int i=0; i<npc.length;i++)
        {
            //AI:决定位置,行为方式
          npc[i].Choice_NPCAI(i,X_intMan,Y_intMan);
          if(npc[i].life<1)
          {
              npc[i].NPC_X = -100;
              npc[i].NPC_Y = -100;
           break;
          }
          rolX[i+1]=npc[i].NPC_X ;
            rolY[i+1]=npc[i].NPC_Y ;
        }
        rolX[0]=X_intMan ;
        rolY[0]=Y_intMan ;
        Rorline();
        for(int i=0; i<line.length;i++)
        {
            if (line[i] == 0)
            {
                Drawman();
            }
            else
            {
                //动画播放部分
                npcimageX[line[i]-1] = npc[line[i]-1].Animation_run(npc[line[i]-1].NPCStatic);
                //根据状态绘制
                // int w= (npcimageX[i]>0||npcimageX[i]<5?3:8);
                if (npc[line[i]-1].Hit == true)
                {
                    if (shine[line[i]-1] == 0)
                    {
                        shine[line[i]-1] = 10;
                    }
                    npc[line[i]-1].Hit = false;
                    if (hit[line[i]-1] == 0)
                        hit[line[i]-1] = 2;
                }
                if (shine[line[i]-1] > 0)
                    shine[line[i]-1]--;
                if (hit[line[i]-1] == 2)
                {
                    npc[line[i]-1].life = npc[line[i]-1].life - HeroACT;
                    hit[line[i]-1] = 1;
                }
                if (shine[line[i]-1] % 2 == 0)
                {
                    switch (npc[line[i]-1].NPCStatic)
                    {
                        case 0:
                        case 4:
                            m_View.Blt(npc[line[i]-1].NPC_X - m_Map.MapX,
                                       npc[line[i]-1].NPC_Y - m_Map.MapY,
                                       npc[line[i]-1].getwidth(npc[line[i]-1].NPCStatic),
                                       npc[line[i]-1].getheight(npc[line[i]-1].NPCStatic),
                                       npcimageX[line[i]-1], 0,
                                       m_Surface_NPC_left);
                            if (npcimageX[line[i]-1] > 225)
                                hit[line[i]-1] = 0;
//        m_View.m_g_BackGraphy.setColor(255);
//        m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+3,Y_intMan-m_Map.MapY+20,16,16);

                            break;
                        case 1:
                        case 5:
                            m_View.Blt(npc[line[i]-1].NPC_X - m_Map.MapX,
                                       npc[line[i]-1].NPC_Y - m_Map.MapY,
                                       npc[line[i]-1].getwidth(npc[line[i]-1].NPCStatic),
                                       npc[line[i]-1].getheight(npc[line[i]-1].NPCStatic),
                                       npcimageX[line[i]-1], 0,
                                       m_Surface_NPC_right);
                            if (npcimageX[line[i]-1] > 225)
                                hit[line[i]-1] = 0;
//        m_View.m_g_BackGraphy.setColor(255);
//        m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+3,Y_intMan-m_Map.MapY+20,16,16);

                            break;
                        case 2:
                        case 6:
                            m_View.Blt(npc[line[i]-1].NPC_X - m_Map.MapX - 7,
                                       npc[line[i]-1].NPC_Y - m_Map.MapY + 1,
                                       npc[line[i]-1].getwidth(npc[line[i]-1].NPCStatic),
                                       npc[line[i]-1].getheight(npc[line[i]-1].NPCStatic),
                                       npcimageX[line[i]-1], 0,
                                       m_Surface_NPC_up);
                            if (npcimageX[line[i]-1] > 225)
                                hit[line[i]-1] = 0;
//                m_View.m_g_BackGraphy.setColor(255);
//             m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+3,Y_intMan-m_Map.MapY+20,16,16);

                            break;
                        case 3:
                        case 7:
                            m_View.Blt(npc[line[i]-1].NPC_X - m_Map.MapX - 7,
                                       npc[line[i]-1].NPC_Y - m_Map.MapY + 1,
                                       npc[line[i]-1].getwidth(npc[line[i]-1].NPCStatic),
                                       npc[line[i]].getheight(npc[line[i]-1].NPCStatic),
                                       npcimageX[line[i]-1], 0,
                                       m_Surface_NPC_down);
                            if (npcimageX[line[i]-1] > 225)
                                hit[line[i]-1] = 0;
//        m_View.m_g_BackGraphy.setColor(255);
//        m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+3,Y_intMan-m_Map.MapY+20,16,16);

                            break;

                    }
                    //绘制NPC生命
                    m_View.m_g_BackGraphy.setColor(255);
                    m_View.m_g_BackGraphy.fillRect(npc[line[i]-1].NPC_X -
                        m_Map.MapX,
                        npc[line[i]-1].NPC_Y - m_Map.MapY - 5,
                        npc[line[i]-1].life / 3, 5);
                }
            }
        }
    }
    public void GotoGameOver()
    {
        m_View.m_pge_gamerank.GotoGameRank(m_i_CurrStage);
        m_View.m_pge_gameswitch.SwitchFrame(this, m_View.m_pge_gamerank);
    }

    private void DrawGameOver()
    {
    }
    int line[]={-1,-1,-1};//排列结果
    boolean role[]={false,false,false};//是否完 排序
    int rolX[]={0,0,0};//元素X坐标
    int rolY[]={0,0,0};//元素Y坐标
    //绘制排序方法
    public void Rorline()//排序过程
    {
        for(int i=0;i<3;i++)
        {
          role[i] =false;
          line[i]=-1;
        }
       for(int i=0;i<3;i++)//取出排序元素`
       {
           int index=0;
           int Y=10000;
           int X=10000;
           for(int  j=0;j<3;j++)//未取出的元素中寻找最小值
           {

               if(Y>rolY[j] && !role[j])
               {
                   Y=rolY[j];
                   index=j;
                  continue;
               }
               if ( X > rolX[j] &&!role[j] )
               {
                   X=rolX[j];
                   index = j;
                   continue;
               }
//               if ( X == rolX[j] && Y == rolY[j]&&
//                   !role[j] )
//               {
//                   index = j;
//                   continue;
//               }
               if ( X < rolX[j] &&
                   !role[j] )
               {
                   index = j;
                   continue;
               }
               if ( Y < rolY[j]&&
                   !role[j] )
               {
                   index = j;
                   continue;
               }

           }

               role[index] = true;
               line[i] = index;
       }
    }
    //============================================END=
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -