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

📄 gamecanvas.java

📁 仙境传说手机游戏源码 仅适用于NOKIA 游戏画布选择了KONIA自带的类。
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            case 49: // '1'
                nowMenu = menus[0];
                menu_index = 1;
                game_tip_progress = 0;
                break;

            case 50: // '2'
                menu_index = 0;
                game_tip_progress = 0;
                current_state++;
                load();
                setVillageMode();
                break;

            case 51: // '3'
                menu_index = 3;
                nowMenu = menus[4];
                break;

            case 52: // '4'
                menu_index = -1;
                nowMenu = menus[1];
                initOption();
                break;

            case 53: // '5'
                nowMenu = menus[2];
                menu_index = 5;
                break;

            case 54: // '6'
                RagMerchant.midlet.notifyDestroyed();
                break;
            }
            break;

        case -1: 
            switch(i)
            {
            case 49: // '1'
                isSound = !isSound;
                break;

            case 50: // '2'
                isVibration = !isVibration;
                break;

            case 51: // '3'
                nowMenu = menus[0];
                menu_index = 0;
                break;
            }
            initOption();
            saveOption();
            break;

        case 1: // '\001'
            switch(i)
            {
            case 49: // '1'
                current_state++;
                NewGame();
                setVillageMode();
                // fall through

            case 50: // '2'
                nowMenu = menus[0];
                menu_index = 0;
                game_tip_progress = 0;
                break;
            }
            break;

        case 2: // '\002'
            menu_index = 0;
            nowMenu = menus[0];
            break;

        case 3: // '\003'
            if(i == 42)
            {
                if(game_tip_progress > 0)
                {
                    game_tip_progress--;
                    nowMenu = menus[4 + game_tip_progress];
                }
                break;
            }
            if(i == 35)
            {
                if(game_tip_progress < 18)
                {
                    game_tip_progress++;
                    nowMenu = menus[4 + game_tip_progress];
                }
                break;
            }
            if(i == 48)
            {
                menu_index = 0;
                nowMenu = menus[0];
                game_tip_progress = 0;
            }
            break;

        case 5: // '\005'
            nowMenu = menus[0];
            menu_index = 0;
            break;

        case 6: // '\006'
            RagMerchant.midlet.notifyDestroyed();
            break;
        }
    }

    void setVillageMode()
    {
        vill_isSub = 0;
        vill_cursor = 0;
        destroyMon();
        loading(0);
        state_index = 0;
        current_state = 2;
        setQuestManager();
    }

    void drawVillage(Graphics g)
    {
        g.setColor(0, 0, 0);
        g.fillRect(0, 0, getWidth(), getHeight());
        switch(state_index)
        {
        case 0: // '\0'
            questManager(g);
            break;

        case 1: // '\001'
            drawVillMenu(g);
            break;
        }
    }

    void keyVillage(int i)
    {
        switch(state_index)
        {
        case 0: // '\0'
            keyQuest(i);
            break;

        case 1: // '\001'
            keyVillMenu(i);
            break;
        }
    }

    void setEnding()
    {
        current_state = 4;
        endingY = 128;
        ending_Mode = 0;
        endingRGB = 0;
    }

    void drawEnding(Graphics g)
    {
        g.setColor(0, 0, 0);
        g.fillRect(0, 0, getWidth(), getHeight());
        if(ending_Mode == 0)
        {
            endingY -= 2;
            for(int i = 0; i < trigger[5].length; i++)
                drawEnglish(trigger[5][i], start_x - 64, (start_y - 64) + endingY + i * 10, g);

            if((start_x - 64) + endingY + trigger[5].length * 10 < 0)
                ending_Mode = 1;
        } else
        {
            if(endingRGB > 255)
                g.setColor(255, 255, 255);
            else
                g.setColor(endingRGB, endingRGB, endingRGB);
            g.drawString("Thank you", start_x, start_y, 17);
            endingRGB += 10;
            if(endingRGB > 400)
                current_state = 1;
        }
    }

    void setVillMenu()
    {
        vill_cursor = 0;
        vill_isSub = 0;
    }
//画游戏前功能选择
    void drawVillCursor(Graphics g)
    {
        g.setColor(255, 255, 255);
        g.fillRect(start_x - 55, getHeight() - 18, 110, 18);
        g.setColor(0, 0, 255);
        g.fillRect(start_x - 54, getHeight() - 17, 108, 16);
        drawCursor(1, start_x - 53, getHeight() - 12, g);
        drawCursor(0, (start_x + 53) - 6, getHeight() - 12, g);
        drawEnglish(villMenus[vill_cursor], start_x - 45, getHeight() - 14, g);
    }

    void drawVillMenu(Graphics g)
    {
        switch(vill_isSub)
        {
        case 0: // '\0'
            drawVillCursor(g);
            break;

        case 1: // '\001'
        case 2: // '\002'
            drawStoreBase(g);
            drawQuit(g);
            break;

        case 3: // '\003'
            drawKaplaMenu(g);
            drawQuit(g);
            break;
        }
    }

    void drawQuit(Graphics g)
    {
        g.setColor(255, 255, 255);
        g.fillRect(start_x - (quit.length() * 6) / 2 - 5, (start_y + 64) - 12, quit.length() * 6 + 10, 12);
        g.setColor(0, 0, 255);
        g.fillRect(start_x - (quit.length() * 6) / 2 - 4, (start_y + 64) - 11, quit.length() * 6 + 8, 10);
        drawEnglish(quit, start_x - (quit.length() * 6) / 2, (start_y + 64) - 10, g);
    }

    void keyVillMenu(int i)
    {
        int j = getGameAction(i);

        switch(vill_isSub)
        {
        default:
            break;

        case 0: // '\0'
            switch(j)
            {
            default:
                break;

            case 2: // '\002'
                vill_cursor--;
                if(vill_cursor < 0)
                    vill_cursor = 3;
                break ;

            case 5: // '\005'
                vill_cursor++;
                if(vill_cursor > 3)
                    vill_cursor = 0;
                break ;

            case 8: // '\b'
                if(vill_cursor == 0)
                    setMap();
                vill_isSub = vill_cursor;
                break;
            }
            break;

        case 1: // '\001'
        case 2: // '\002'
            keyStoreList(i);
            break;

        case 3: // '\003'
            keyKaplaMenu(i);
            break;
        }
    }
/**
 *            游戏中系统菜单
 * @param g
 */
    void drawKaplaMenu(Graphics g)
    {
        if(kaplaCursor == 5)
        {
            drawUserLoad(g);
            return;
        }
        if(!isSound)
            kaplaMenus[2] = "SOUND-OFF";
        else
            kaplaMenus[2] = "SOUND-ON";
        if(!isVibration)
            kaplaMenus[3] = "SPEED-SLOW";
        else
            kaplaMenus[3] = "SPEED-FAST";
        System.gc();
        g.setColor(255, 255, 255);
        g.fillRect(start_x - 50, start_y - 30, 100, 60);
        g.setColor(0, 0, 255);
        g.fillRect(start_x - 49, start_y - 29, 98, 58);
        for(int i = 0; i < kaplaMenus.length; i++)
            drawEnglish(kaplaMenus[i], start_x - (kaplaMenus[i].length() * 6 >> 1), (start_y - 25) + i * 10, g);

        drawCursor(0, start_x - (kaplaMenus[kaplaCursor].length() * 6 >> 1) - 7, (start_y - 25) + kaplaCursor * 10, g);
    }

    void keyKaplaMenu(int i)
    {
        if(kaplaCursor == 5)
            switch(i)
            {
            case 49: // '1'
                load();
                setVillageMode();
                setVillMenu();
                break;

            case 50: // '2'
                vill_isSub = 0;
                kaplaCursor = 0;
                setVillMenu();
                break;
            }
        switch(getGameAction(i))
        {
        case 1: // '\001'
            if(kaplaCursor > 0)
                kaplaCursor--;
            break;

        case 6: // '\006'
            if(kaplaCursor < kaplaMenus.length - 1)
                kaplaCursor++;
            break;

        case 8: // '\b'
            switch(kaplaCursor)
            {
            default:
                break;

            case 0: // '\0'
                save();
                String s = "Game saved";
                setBoxText(s, -1, 5, start_x - 55, start_y - 10, 110, 20);
                setQuestString();
                state_index = 0;
                break;

            case 1: // '\001'
                kaplaCursor = 5;
                break;

            case 2: // '\002'
                if(isSound)
                {
                    isSound = false;
                    kaplaMenus[2] = "Sound off";
                } else
                {
                    isSound = true;
                    kaplaMenus[2] = "Sound on";
                }
                saveOption();
                break;

            case 3: // '\003'
                isVibration = !isVibration;
                saveOption();
                break;

            case 4: // '\004'
                RagMerchant.midlet.notifyDestroyed();
                break;
            }
            break;
        }
        if(i == 48)
        {
            vill_isSub = 0;
            kaplaCursor = 0;
            setVillMenu();
        }
    }
/**
 * 储备列表
 * @param i
 * @param j
 * @param g
 */
    void drawStoreList(int i, int j, Graphics g)
    {
        int k = vill_cursor != 2 ? storeCursor + oriCursor : ((int) (storeList[storeCursor + oriCursor]));
        if(vill_cursor == 2)
        {
            for(int l = storeCursor; l < (storeList.length - storeCursor >= 5 ? storeCursor + 5 : storeList.length - storeCursor); l++)
            {
                drawEnglish(item_names[storeList[l]], i, j + (l - storeCursor) * 10, g);
                drawNumber(item_value[storeList[l] * 4], i + 97, j + (l - storeCursor) * 10, g, 1);
            }

        } else
        {
            for(int i1 = storeCursor; i1 < (item_names.length - storeCursor >= 5 ? storeCursor + 5 : storeList.length - storeCursor); i1++)
            {
                drawEnglish(item_names[i1], i, j + (i1 - storeCursor) * 10, g);
                drawNumber(item_value[i1 * 4] >> 1, i + 97, j + (i1 - storeCursor) * 10, g, 1);
            }

        }
        drawCursor(1, i + item_names[k].length() * 6 + 2, j + oriCursor * 10 + 2, g);
    }

    void drawStoreBase(Graphics g)
    {
        g.setColor(255, 255, 255);
        g.fillRect(start_x - 51, start_y - 51, 102, 103);
        g.setColor(0, 0, 255);
        g.fillRect(start_x - 50, start_y - 50, 100, 101);
        g.setColor(255, 255, 255);
        g.drawLine(start_x - 50, start_y - 25, (start_x - 50) + 100, start_y - 25);
        g.drawLine(start_x - 50, start_y + 27, (start_x - 50) + 100, start_y + 27);
        for(int i = 0; i < 2; i++)
            drawEnglish(vill_storeString[i], start_x - 48, (start_y - 50) + 3 + i * 10, vill_storeString[i].length, g);

        drawNumber(ZENY, start_x + 42, (start_y - 50) + 3, g, 1);
        drawImage(imgs[5], start_x + 42, (start_y - 50) + 3, 150, 0, 6, 9, g);
        drawNumber(WEIGHT, (start_x - 48) + 60, (start_y - 50) + 13, g, 1);
        drawNumber(getMaxWeight(), (start_x - 48) + 66, (start_y - 50) + 13, g, 0);
        drawEnglish(vill_storeString[2], start_x - 48, start_y + 29, vill_storeString[2].length, g);
        drawEnglish(vill_storeString[3], start_x - 48, start_y + 39, vill_storeString[3].length, g);
        int j = 0;
        if(vill_cursor == 1)
            j = storeCursor + oriCursor;
        else
            j = storeList[storeCursor + oriCursor];
        drawNumber(item_have[j], (start_x + 50) - 8, start_y + 29, g, 1);
        switch(item_value[j * 4 + 2])
        {
        default:
            break;

        case 0: // '\0'
            if(j == 0)
                drawEnglish(vill_storeString[4], start_x - 11, start_y + 39, vill_storeString[4].length, g);
            else
                drawEnglish(vill_storeString[8], start_x - 11, start_y + 39, vill_storeString[4].length, g);
            drawNumber(item_value[j * 4 + 3], start_x + 42, start_y + 39, g, 1);
            break;

        case 1: // '\001'
            drawEnglish(vill_storeString[7], start_x - 11, start_y + 39, vill_storeString[7].length, g);

⌨️ 快捷键说明

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