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

📄 cbattle.java

📁 经典java手机游戏J2me(Rpj游戏)
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        {
            m_enimyNowFrame = 0;
        }
        switch (m_enimyID)  //画怪物
        {
            case 0: //骷髅怪
                m_enimyX = m_enimy0PosFrame[m_enimyNowFrame][0];    //进攻时怪物移动,改变坐标
                m_enimyY = m_enimy0PosFrame[m_enimyNowFrame][1];
                m_offG.setClip(m_enimyX, m_enimyY, 64, 64);
                m_offG.drawImage(m_imEnimy, m_enimyX - m_enimy0Frame[m_enimyNowFrame] * 64, m_enimyY, 0);
                break;
            case 1: //铁人怪
                m_enimyX = m_enimy1PosFrame[m_enimyNowFrame][0];    //进攻时怪物移动,改变坐标
                m_enimyY = m_enimy1PosFrame[m_enimyNowFrame][1];
                m_offG.setClip(m_enimyX, m_enimyY, 64, 64);
                m_offG.drawImage(m_imEnimy, m_enimyX - m_enimy1Frame[m_enimyNowFrame] * 64, m_enimyY, 0);
                break;
            case 2: //火龙怪
                m_enimyX = m_enimy2PosFrame[m_enimyNowFrame][0];    //进攻时怪物移动,改变坐标
                m_enimyY = m_enimy2PosFrame[m_enimyNowFrame][1];
                m_offG.setClip(m_enimyX, m_enimyY, 80, 80);
                m_offG.drawImage(m_imEnimy, m_enimyX - m_enimy2Frame[m_enimyNowFrame] * 80, m_enimyY, 0);
                break;
        }
        m_offG.setClip(5, 0, 45, 45);
        m_offG.drawImage(m_imEnimyHead, 5 - m_enimyID * 45, 0, 0);  //画怪物头像
        m_offG.setClip(0, 0, 176, 208);
    }
        
    //-----------------------------
    //画战斗菜单
    //-----------------------------
    public void DrawMenu()
    {
        if (m_canSelect)  //该回合战斗画面还没结束时不能选择
        {
            switch (m_pointer)
            {
                case 1:     //攻击
                    m_offG.setClip(73, 168, 40, 20);
                    m_offG.drawImage(m_imBattleMenu, 73, 168, 0);
                    m_offG.setClip(0, 0, 176, 208);
                    break;
                case 2:     //特技
                    m_offG.setClip(120, 168, 40, 20);
                    m_offG.drawImage(m_imBattleMenu, 120 - 40, 168, 0);
                    m_offG.setClip(0, 0, 176, 208);
                    break;
                case 3:     //道具
                    m_offG.setClip(82, 188, 40, 20);
                    m_offG.drawImage(m_imBattleMenu, 82 - 80, 188, 0);
                    m_offG.setClip(0, 0, 176, 208);
                    break;
                case 4:     //逃跑
                    m_offG.setClip(130, 188, 40, 20);
                    m_offG.drawImage(m_imBattleMenu, 130 - 120, 188, 0);
                    m_offG.setClip(0, 0, 176, 208);
                    break;
            }
        }
    }
        
    //-----------------------------
    //绘图部分
    //-----------------------------
    public void paint()
    {
        //清屏
        m_offG.setColor(255, 255, 255);
        m_offG.fillRect(0, 0, 176, 208);
        
        m_offG.drawImage(m_imBackground, 0, 0, 0);
        DrawMenu();
        DrawBlood();
        if (m_enimyAttack)  //敌人先进攻时,先画主角,再画敌人,实现遮挡
        {
            DrawPlayer();
            DrawEnimy();
        }
        else    //否则就让主角遮挡敌人
        {
            DrawEnimy();
            if (!m_isEscaped)   //没逃跑时才画主角
                DrawPlayer();
        }
        
        //显示提示信息
        if (m_selectEscape && !m_canEscape)     //选择了逃跑时,逃跑失败,提示信息
        {
            if (m_timeForShowText-- > 0)
            {
                m_offG.setClip(0, 0, 176, 208);
                m_offG.setColor(m_textColor);
                m_offG.drawString(m_text, 30, 150, 0);  //显示逃跑失败
            }
            else
            {
                m_enimyAttack  = true;   //敌人开始进攻
                m_selectEscape = false;
            }
        }
        else if (m_selectMagic && m_noMoreMP)      //选择了特技,不够 MP 时,提示信息
        {
            if (m_timeForShowText-- > 0)
            {
                m_offG.setClip(0, 0, 176, 208);
                m_offG.setColor(m_textColor);
                m_offG.drawString(m_text, 30, 150, 0);  //显示不够MP时
            }
            else
            {
                m_selectMagic = false;
                m_noMoreMP    = false;
            }
        }
        else if (m_enimyAttack)      //当主角攻击时(显示提示信息时,已是敌人进攻时候)
        {
            if (m_timeForShowText-- > 0)
            {
                m_offG.setClip(0, 0, 176, 208);
                m_offG.setColor(m_textColor);
                m_offG.drawString(m_text, 100, 80, 0);  //显示“MISS”或扣除的生命值,或提示信息
            }
        }
        else    //当敌人攻击时(显示提示信息时,已是敌人进攻完了的时候)
        {
            if (m_timeForShowText-- > 0)
            {
                m_offG.setClip(0, 0, 176, 208);
                m_offG.setColor(m_textColor);
                m_offG.drawString(m_text, 20, 70, 0);  //显示“MISS”或扣除的生命值,或提示信息
            }
        }
        
        if (m_succeed != 0 || m_isEscaped) //战斗胜利或失败时,或者已经逃跑时
        {
            DirectGraphics dg = DirectUtils.getDirectGraphics(m_offG);
            int tmpX[] = {0, 0, 176, 176};
            int tmpY[] = {0, 208, 208, 0};
            dg.fillPolygon(tmpX, 0, tmpY, 0, 4, 0x55000000);    //背景变暗
            tmpX[0] = 15;
            tmpX[1] = 15;
            tmpX[2] = 160;
            tmpX[3] = 160;
            tmpY[0] = 52;
            tmpY[1] = 155;
            tmpY[2] = 155;
            tmpY[3] = 52;
            dg.fillPolygon(tmpX, 0, tmpY, 0, 4, 0x99004E98);    //中间蓝色“画布”
        }
        
        if (m_succeed == 1)  //战斗胜利
        {
            m_offG.setClip(0, 0, 176, 208);
            m_offG.setColor(59, 186, 252);
            m_offG.drawString("Battle Success!", 36, 78, 0);
            m_offG.setColor(255, 255, 0);
            m_offG.drawString("Battle Success!", 36, 76, 0);
            
            m_offG.setColor(0, 255, 0);
            m_offG.drawString("Got Exp: " + m_gotExp, 50, 100, 0);
            if (m_playerExp >= m_playerLv * 100)        //达到升级所需经验值时
            {
                m_isLevelUp = true;
                m_playerLv++;   //升级!
                m_playerExp   = 0;
                m_playerHP    = m_playerLv * 100;
                m_playerMaxHP = m_playerHP;
                m_playerMP    = m_playerLv * 50;
                m_playerMaxMP = m_playerMP;
            }
            if (m_isLevelUp)
            {
                m_offG.drawString("Level Up!!!", 50, 120, 0);    //显示升级了!
            }
            else
            {
                int tmp = m_playerLv * 100 - m_playerExp;
                m_offG.drawString("Next LvUp Exp: " + tmp, 20, 120, 0);    //显示还需多少经验值升级
            }
                        
            m_timeBeforeExit--;
            if (m_timeBeforeExit <= 0)  //结束战斗
            {
                m_exitBattle = true;
                m_isLevelUp  = false;
            }
        }
        else if (m_succeed == 2)    //战斗失败
        {
            m_offG.setClip(0, 0, 176, 208);
            m_offG.setColor(59, 186, 252);
            m_offG.drawString("Battle Failure...", 36, 78, 0);
            m_offG.setColor(255, 255, 0);
            m_offG.drawString("Battle Failure...", 34, 76, 0);
            m_timeBeforeExit--;
            if (m_timeBeforeExit <= 0)
            {
                //战斗失败,回到主菜单
                m_timeBeforeExit = 0;
            }
        }
        
        if (m_isEscaped)    //如果逃跑成功时
        {
            m_offG.setClip(0, 0, 176, 208);
            m_offG.setColor(59, 186, 252);
            m_offG.drawString("Escape Succeeded!", 20, 78, 0);
            m_offG.setColor(255, 255, 0);
            m_offG.drawString("Escape Succeeded!", 20, 76, 0);
            
            m_offG.setColor(0, 255, 0);
            m_offG.drawString("Got Exp: 0", 50, 100, 0);
            int tmp = m_playerLv * 100 - m_playerExp;
            m_offG.drawString("Next LvUp Exp: " + tmp, 20, 120, 0);    //显示还需多少经验值升级
            
            m_timeBeforeExit--;
            if (m_timeBeforeExit <= 0)  //结束战斗
            {
                m_exitBattle = true;
            }
        }
    }
    
    //-----------------------------
    // 返回是否战斗失败
    //-----------------------------
    public boolean isDead()
    {
        if (m_succeed == 2 && m_timeBeforeExit <= 0)
            return true;
        else
            return false;
    }
    
    //-----------------------------
    // 返回是否该离开战斗画面
    //-----------------------------
    public boolean isFinished()
    {
        return m_exitBattle;
    }
    
    //-----------------------------
    // 返回主角级别
    //-----------------------------
    public int getPlayerLevel()
    {
        return m_playerLv;
    }
    
    //-----------------------------
    // 返回主角生命值
    //-----------------------------
    public int getPlayerHP()
    {
        return m_playerHP;
    }
    
    //-----------------------------
    // 返回主角体力值
    //-----------------------------
    public int getPlayerMP()
    {
        return m_playerMP;
    }
    
    //-----------------------------
    // 返回主角经验值
    //-----------------------------
    public int getPlayerExp()
    {
        return m_playerExp;
    }
    
    //-----------------------------
    //按键处理
    //-----------------------------
    public void keyPressed(int n)
    {
        if (!m_canSelect)
            return;
        switch (n)
        {
            //向上
            case Canvas.UP:
                if (m_pointer == 3)   //若光标在“道具”上,光标指去“攻击”
                    m_pointer = 1;
                else if (m_pointer == 4)  //若光标在“逃跑”上,光标指去“特技”
                    m_pointer = 2;
                break;
            //向下
            case Canvas.DOWN:
                if (m_pointer == 1)   //若光标在“攻击”上,光标指去“道具”
                    m_pointer = 3;
                else if (m_pointer == 2)  //若光标在“特技”上,光标指去“逃跑”
                    m_pointer = 4;
                break;
            //向左
            case Canvas.LEFT:
                if (m_pointer == 2)   //若光标在“特技”上,光标指去“攻击”
                    m_pointer = 1;
                else if (m_pointer == 4)  //若光标在“逃跑”上,光标指去“道具”
                    m_pointer = 3;
                break;
            //向右
            case Canvas.RIGHT:
                if (m_pointer == 1)   //若光标在“攻击”上,光标指去“特技”
                    m_pointer = 2;
                else if (m_pointer == 3)  //若光标在“道具”上,光标指去“逃跑”
                    m_pointer = 4;
                break;
            //确定
            case Canvas.FIRE:
                m_selectItem = m_pointer;
                m_pointer    = 1;   //下一回合光标在“攻击”上
                m_canSelect  = false;
                break;
        }
    }

}

⌨️ 快捷键说明

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