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

📄 gamecanvas.java

📁 仙境传说手机游戏源码 仅适用于NOKIA 游戏画布选择了KONIA自带的类。
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            break;

        case 2: // '\002'
            drawEnglish(vill_storeString[5], start_x - 11, start_y + 39, vill_storeString[5].length, g);
            drawNumber(item_value[j * 4 + 3], start_x + 42, start_y + 39, g, 1);
            break;

        case 3: // '\003'
            drawEnglish(vill_storeString[6], start_x - 11, start_y + 39, vill_storeString[6].length, g);
            drawNumber(item_value[j * 4 + 3], start_x + 42, start_y + 39, g, 1);
            break;
        }
        drawStoreList(start_x - 48, start_y - 23, g);
    }

    void keyStoreList(int i)
    {
        int j = vill_cursor != 2 ? storeCursor + oriCursor : ((int) (storeList[storeCursor + oriCursor]));
        int k = vill_cursor != 2 ? item_names.length - 1 : storeList.length - 1;
        switch(getGameAction(i))
        {
        case 1: // '\001'
            if(oriCursor == 0)
            {
                if(storeCursor != 0)
                    storeCursor--;
            } else
            {
                oriCursor--;
            }
            return;

        case 6: // '\006'
            if(storeCursor + oriCursor != k)
                if(oriCursor == 4)
                    storeCursor++;
                else
                    oriCursor++;
            return;

        case 8: // '\b'
            if(vill_cursor == 2)
            {
                if(ZENY >= item_value[j * 4] && WEIGHT + item_value[j * 4 + 1] <= getMaxWeight())
                {
                    item_have[j]++;
                    ZENY -= item_value[j * 4];
                    createWeight();
                }
            } else
            if(item_have[j] > 0)
            {
                item_have[j]--;
                int l = 0;
                if(SKILLS[3] != -1)
                    l = ((item_value[j * 4] / 2) * getSkillValue(3, false)) / 100;
                ZENY += item_value[j * 4] / 2 + l;
                createWeight();
            }
            break;
        }
        if(i == 48)
        {
            oriCursor = 0;
            storeCursor = 0;
            setVillMenu();
        }
        initNowArm();
    }

    void initNowArm()
    {
        for(int i = 0; i < 2; i++)
            if(nowArm[i] != 0 && item_have[nowArm[i]] <= 0)
                nowArm[i] = 0;

    }

    void setBoxText(String s, int i, int j, int k, int l, int i1, int j1)
    {
        triggerText = new char[s.length()];
        s.getChars(0, s.length(), triggerText, 0);
        nextOffset = 0;
        x = k;
        y = l;
        w = i1;
        h = j1;
        face = i;
        step = j;
        quest_buf = new char[(j1 - 4) / 10][(i1 - 10) / 6];
    }

    boolean isNextBox()
    {
        return nextOffset < triggerText.length;
    }
/**
 * 
 * 对话框
 * 
 */
    void drawQuestBox(Graphics g)
    {
        int i = y + (h >> 1);
        int j = h >> 1 >> step;
        int k = i - j;
        int l = j << 1;
        g.setColor(255, 255, 255);
        g.fillRect(x - 1, k - 1, w + 2, l + 2);
        g.setColor(0, 0, 255);
        g.fillRect(x, k, w, l);
        if(face == 4)
            drawImage(imgs[8], (start_x - 92) + (37 >> step), y - 33, face * 32, 0, 32, 32, g);
        else
        if(face != -1)
            drawImage(imgs[8], (start_x + 60) - (37 >> step), y - 33, face * 32, 0, 32, 32, g);
        if(step == 0)
        {
            for(int i1 = 0; i1 < quest_buf.length; i1++)
                drawEnglish(quest_buf[i1], x + 5, y + 2 + i1 * 10, quest_buf[i1].length, g);

        }
        if(step != 0)
        {
            step--;
            if(step == 0)
                messageTime = System.currentTimeMillis();
        }
    }

    void setQuestString()
    {
        boolean flag = false;
label0:
        for(int i = 0; i < quest_buf.length; i++)
        {
            int j = 0;
            do
            {
                if(j >= quest_buf[0].length)
                    continue label0;
                if(nextOffset < triggerText.length)
                {
                    char c = triggerText[nextOffset];
                    if(c == ';')
                    {
                        quest_buf[i][j] = '\n';
                        nextOffset++;
                        continue label0;
                    }
                    quest_buf[i][j] = c;
                    nextOffset++;
                } else
                {
                    quest_buf[i][j] = '\n';
                    continue label0;
                }
                j++;
            } while(true);
        }

    }

    void setQuestManager()
    {
        if(questIng > 2)
        {
            switch(questNo)
            {
            case 0: // '\0'
                if(LEVEL >= 8)
                {
                    questNo++;
                    questIng = 0;
                }
                break;

            case 1: // '\001'
                if(LEVEL >= 17)
                {
                    questNo++;
                    questIng = 0;
                }
                break;

            case 2: // '\002'
                if(LEVEL >= 24)
                {
                    questNo++;
                    questIng = 0;
                }
                break;

            case 3: // '\003'
                if(LEVEL >= 31)
                {
                    questNo++;
                    questIng = 0;
                }
                break;
            }
            if(questIng != 0)
            {
                String s = "Alberta Town";
                setBoxText(s, -1, 5, start_x - 55, start_y - 10, 110, 20);
                setQuestString();
                state_index = 0;
                quest_Str = null;
                return;
            }
        }
        if(questIng == 0)
        {
            quest_Str = trigger[questNo];
            setBoxText(quest_Str[0], questArray[5 + questNo] != 1 ? ((int) (questArray[questNo])) : 4, 5, start_x - 55, (start_y + 50) - 40, 110, 40);
            setQuestString();
            triggerNo = 0;
            state_index = 0;
        } else
        if(questIng == 1)
        {
            boolean flag = false;
            switch(questNo)
            {
            case 0: // '\0'
                if(item_have[2] >= 30)
                {
                    item_have[2] -= 30;
                    SKILLS[0] = 0;
                    flag = true;
                }
                break;

            case 1: // '\001'
                if(item_have[3] >= 30 && item_have[4] >= 20)
                {
                    item_have[3] -= 30;
                    item_have[4] -= 20;
                    SKILLS[1] = 0;
                    flag = true;
                }
                break;

            case 2: // '\002'
                if(item_have[3] >= 10 && item_have[4] >= 20 && item_have[5] >= 30)
                {
                    item_have[3] -= 10;
                    item_have[4] -= 20;
                    item_have[5] -= 30;
                    SKILLS[2] = 0;
                    flag = true;
                }
                break;

            case 3: // '\003'
                if(item_have[6] >= 30)
                {
                    item_have[6] -= 30;
                    SKILLS[3] = 0;
                    flag = true;
                }
                break;

            case 4: // '\004'
                if(dragonTailNo >= 30)
                    flag = true;
                break;
            }
            if(flag)
            {
                quest_Str = Solution[questNo];
                setBoxText(quest_Str[0], questArray[questNo], 5, start_x - 55, (start_y + 50) - 40, 110, 40);
                setQuestString();
                triggerNo = 0;
                questIng = 2;
                state_index = 0;
            } else
            {
                setBoxText(notSolution[questNo], questArray[questNo], 5, start_x - 55, (start_y + 50) - 40, 110, 40);
                setQuestString();
                triggerNo = 0;
                state_index = 0;
                questIng = 1;
            }
        }
    }

    void setNextString()
    {
        if(questIng == 1)
        {
            state_index = 1;
            return;
        }
        boolean flag = false;
        triggerNo++;
        if(quest_Str == null)
        {
            state_index = 1;
            setVillMenu();
            return;
        }
        if(triggerNo < quest_Str.length)
        {
            byte byte0;
            if(face == 4)
                byte0 = questArray[questNo];
            else
                byte0 = 4;
            if(questIng == 2 && triggerNo == quest_Str.length - 1)
                setBoxText(quest_Str[triggerNo], -1, 5, start_x - 55, start_y - 8, 110, 16);
            else
                setBoxText(quest_Str[triggerNo], byte0, 5, start_x - 55, (start_y + 50) - 40, 110, 40);
            setQuestString();
        } else
        {
            questIng++;
            state_index = 1;
            if(questIng > 2 && questNo == 4)
            {
                setEnding();
                return;
            }
            setVillMenu();
        }
    }

    void questManager(Graphics g)
    {
        drawQuestBox(g);
    }

    void keyQuest(int i)
    {
        if(isNextBox())
            setQuestString();
        else
            setNextString();
    }

    void setMap()
    {
        loading(1);
        current_state = 3;
        state_index = 0;
        turn = 0;
        if(questIng == 1)
        {
            setFieldMessageBox(questInfo[questNo], start_x - 50, start_y - 15, 100, 30, 5);
            isInfoMode = true;
        }
        MAPX = 0;
        MAPY = 1;
        player_X = 1;
        player_Y = 80;
        plAniTurn = 0;
        action = 0;
        dir = 1;
        initMon();
        play(2);
    }
/**
 * 
 * 绘画天地/ :)
 * @param g
 */
    void drawField(Graphics g)
    {
        switch(state_index)
        {
        default:
            break;

        case 0: // '\0'
            g.setColor(0, 0, 0);
            g.fillRect(0, 0, getWidth(), getHeight());
            drawMap(g); //地图
            drawMonster(g);//怪物
            drawChar(g);//??
            drawUI(g);//UI界面 生命==
            drawEffect(g); //效果
            break;

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

        case 2: // '\002'
            if(isInfoMode)
            {
                g.setColor(0, 0, 0);
                g.fillRect(0, 0, getWidth(), getHeight());
            }
            drawFieldMessageBox(g);
            break;
        }
    }

    void keyField(int i)
    {
        switch(state_index)
        {
        default:
            break;

        case 0: // '\0'
            if(i == 48)
                state_index = 1;
            keyChar(i);
            break;

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

        case 2: // '\002'
            keyFieldMessageBox(i);
            break;
        }
    }
  void no_keyField(int i){
	  switch(state_index)
      {
      default:
          break;
      case 0:           
          no_keyChar(i);
          break;
      }
	  
  }
    void drawMap(Graphics g)
    {
        int i = start_x - 64;
        int j = start_y - 64;
        int k = MAPY * 48 * 8 + MAPX * 8;
        boolean flag = false;
        for(int l = 0; l < 8; l++)
        {
            for(int j1 = 0; j1 < 8; j1++)
            {
                byte byte0 = maps[k + l + j1 * 48];
                if(byte0 != 0)
                    drawImage(imgs[11], i + l * 16, j + j1 * 16, (byte0 - 1) * 16, 0, 16, 16, g);
            }

        }

        k += 2304;
        for(int i1 = 0; i1 < 8; i1++)
        {
            for(int k1 = 0; k1 < 8; k1++)
            {
                byte byte1 = maps[k + i1 + k1 * 48];
                if(byte1 != 0)
                    drawImage(imgs[12], i + i1 * 16, j + k1 * 16, (byte1 - 1) * 16, 0, 16, 16, g);
            }

⌨️ 快捷键说明

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