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

📄 gamecanvas.java

📁 A action mobile game called A Last Warrior Great for use and already configuration to build with JB
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    }
  }

  public void checkHouse() {
    if (stateInGame / 10 == 1 && nowVillageNb < 4) {
      if (characXPos > houseX[nowVillageNb] &&
          characXPos < houseX[nowVillageNb] + 35) {
        enterAni();
        stateInGame += 20;
        enterHouse();
      }
    } else
    if (stateInGame / 10 == 1 && nowVillageNb == 4) {
      nbOfDungeon = -1;
      for (int i = 0; i < 4; i++) {
        if (characXPos + 9 > dungeonX[i] && characXPos + 9 < dungeonX[i] + 30 &&
            canDungeon >= i) {
          nbOfDungeon = i;

        }
      }
      if (nbOfDungeon != -1) {
        enterAni();
        stateInGame = 20;
        nowDungeonNb = nowDungeonFloor = 0;
        makeDungeonFloor(1);
        makeDungeon();
      }
    }
    repaintIt();
  }

  public void enterAni() {
    keyEnabled = false;
    drawCharacImage(characXPos, characYPos, 2, 0);
    repaintIt();
    pause(100);
    drawCharacImage(characXPos, characYPos, 2, 1);
    repaintIt();
    pause(100);
    drawCharacImage(characXPos, characYPos, 2, 0);
    repaintIt();
    pause(100);
    drawCharacImage(characXPos, characYPos, 2, 1);
    repaintIt();
    pause(100);
    keyEnabled = true;
    isMoving = false;
  }

  public void drawHouse1(int yPos, int sign) {
    for (int i = 0; i < 3; i++) {
      for (int j = 0; j < 15; j++) {
        drawImage(8 * j, yPos + 8 * i, brick1);

      }
    }

    drawLine(0, yPos + 24, 120, yPos + 24, 0);
    for (int i = 0; i < 11; i++) {
      drawImage(12 * i, yPos - 12, roof1);

    }
    int doorXPos;
    int iconXPos;
    if (sign == 1) {
      drawImage(12, 61, chimney);
      drawImage(4, 80, window);
      drawImage(100, 80, window);
      doorXPos = 58;
      iconXPos = 40;
    } else {
      if (sign == 0) {
        drawImage(0, yPos - 12, pillar);
      } else {
        drawImage(108, yPos - 12, pillar);
      }
      doorXPos = 36;
      iconXPos = 74;
    }
    for (int i = 0; i < 4; i++) {
      drawImage(doorXPos + 8 * i, yPos + 4, entrance1);

    }
    drawImage(doorXPos, yPos + 15, doorpillar1);
    drawImage(doorXPos + 24, yPos + 15, doorpillar1);
    drawFillRect(doorXPos + 9, yPos + 15, 15, 10, 0);
    drawLine(doorXPos + 32, yPos + 4, doorXPos + 32, yPos + 15, 0);
    drawClipImage(iconsImg, iconXPos, yPos + 5, 17, 16, 17 * sign, 0);
  }

  public void viewHelp() {
    stateInGame = 60;
    drawRoundBox(0, 24, 120, 119, 0xffffff);
    drawLine(2, 45, 118, 45, 0);
    drawString("Help", 7, 29);
    drawString("0 : Menu", 5, 48);
    drawString("    Select", 5, 61);
    drawString("Arrow : Move", 5, 74);
    drawString("#     : Items", 5, 87);
    drawString("*     : Upper", 5, 100);
    drawString("        Status", 5, 113);
    repaintIt();
  }

  public void viewItem() {
    inMenu = true;
    stateInGame = stateInMenu = 140;
    clearScreen();
    drawRoundBox(0, 0, 106, 86, 0xffffff);
    itemName = new int[5];
    for (int i = 0; i < 4; i++) {
      itemName[i] = (ITEMS[dressedItem[i] / 10][dressedItem[i] % 10][0] >> 7 &
                     0xfff) * 100 +
          (ITEMS[dressedItem[i] / 10][dressedItem[i] % 10][0] & 0x7f);

    }
    itemName[4] = 17802;
    setMenuInfo(140, itemName);
    drawMenu(false);
    repaintIt();
  }

  public void viewStatus() {
    stateInGame = 60;
    clearScreen();
    drawRoundBox(0, 10, 120, 128, 0xffffff);
    for (int j = 0; j < 6; j++) {
      drawLine(4, 28 + 18 * j, 123, 28 + 18 * j, 0x666666);

    }
    for (int i = 0; i < 7; i++) {
      drawLine(30, 13 + 18 * i, 30, 25 + 18 * i, 0x666666);

    }
    drawLine(65, 121, 65, 133, 0x666666);
    drawLine(90, 121, 90, 133, 0x666666);
    drawString("".concat(String.valueOf(String.valueOf(lv))), 6, 14);
    drawString(name, 32 + (88 - font.stringWidth(name)) / 2, 14);
    drawString(attributeName[2], 6, 32);
    drawString(attributeName[3], 6, 50);
    drawString("Exp", 6, 68);
    drawString("Nex", 5, 86);
    drawString("Gld", 5, 104);
    drawString(attributeName[0], 6, 122);
    drawString(attributeName[1], 70, 122);
    drawString(String.valueOf(String.valueOf( (new StringBuffer(String.valueOf(
        String.valueOf(hp)))).append(" / ").append(attribute[2]))), 51, 32);
    drawString(String.valueOf(String.valueOf( (new StringBuffer(String.valueOf(
        String.valueOf(mp)))).append(" / ").append(attribute[3]))), 51, 50);
    drawStringRight(String.valueOf(String.valueOf(exp)).concat(""), 112, 68);
    drawStringRight(String.valueOf(String.valueOf( (lv + 1) * (lv + 1) *
                                                  (lv + 1) * (lv + 1) * (lv + 1))).
                    concat(""), 112, 86);
    drawStringRight(String.valueOf(String.valueOf(gold)).concat(" G"), 112, 104);
    drawString("".concat(String.valueOf(String.valueOf(attribute[0]))), 40, 122);
    drawString("".concat(String.valueOf(String.valueOf(attribute[1]))), 101,
               122);
    repaintIt();
  }

  public void viewSkill() {
    keyEnabled = false;
    stateInGame = 1;
  }

  public void makeItemChart(int sourceChart[], int length, int type) {
    int count = 0;
    for (int i = 0; i < length; i++) {
      if (type == sourceChart[i] / 10) {
        count++;

      }
    }
    itemName = new int[count];
    itemInfo = new int[count];
    count = 0;
    for (int i = 0; i < length; i++) {
      if (type == sourceChart[i] / 10) {
        itemName[count] = (ITEMS[sourceChart[i] / 10][sourceChart[i] % 10][0] >>
                           7 & 0xfff) * 100 +
            (ITEMS[sourceChart[i] / 10][sourceChart[i] % 10][0] & 0x7f);
        itemInfo[count] = sourceChart[i];
        count++;
      }
    }

  }

  private void makeSkillList() {
    itemName = new int[lv > (SKILL_INFO.length - 1) * 5 ? 10 : lv / 5 + 1];
    for (int i = 0; i < itemName.length; i++) {
      itemName[i] = (SKILL_INFO[i] >> 4 & 0x3ff) * 100 + (SKILL_INFO[i] & 0xf);

    }
  }

  public void usePotion(int position, boolean display) {
    int itemPos = 0;
    int i = 0;
    do {
      if (i >= haveItemNb) {
        break;
      }
      if (haveItem[i] == itemInfo[position]) {
        itemPos = i;
        break;
      }
      i++;
    } while (true);
    int addHp = (ITEMS[haveItem[itemPos] / 10][haveItem[itemPos] % 10][1] >> 12 &
                 0x3f) * attrMul[2];
    int addMp = (ITEMS[haveItem[itemPos] / 10][haveItem[itemPos] % 10][1] >> 18 &
                 0x3f) * attrMul[3];
    if (display) {
      String displayStr = "";
      if (addHp > 0) {
        displayStr = String.valueOf(displayStr) +
            String.valueOf(" HP + ".concat(String.valueOf(String.valueOf(addHp))));
      }
      if (addMp > 0) {
        displayStr = String.valueOf(displayStr) +
            String.valueOf(" MP + ".concat(String.valueOf(String.valueOf(addMp))));
      }
      displayStr = String.valueOf(String.valueOf(displayStr)).concat(
          " recover!");
      drawString(displayStr, 10, 143);
    }
    hp += addHp;
    if (hp > attribute[2]) {
      hp = attribute[2];
    }
    mp += addMp;
    if (mp > attribute[3]) {
      mp = attribute[3];
    }
    for (int ii = itemPos; i < haveItemNb - 1; ii++) {
      haveItem[ii] = haveItem[ii + 1];

    }
    haveItemNb--;
    repaintIt();
  }

  public void drawStatusWin() {
    drawRoundBox(0, 0, 120, 23, rgbPixel(255, 255, 160));
    drawClipImage(hpmpImg, 3, 5, 9, 9, 0, 0);
    drawClipImage(hpmpImg, 61, 5, 10, 10, 9, 0);
    drawImage(13, 6, gauge);
    drawImage(72, 6, gauge);
    drawRatioNumber(53, 14, hp, attribute[2]);
    drawRatioNumber(112, 14, mp, attribute[3]);
    drawFillRect(15, 7, (41 * hp) / attribute[2], 1, rgbPixel(255, 32, 160));
    drawFillRect(15, 8, (41 * hp) / attribute[2], 1, 0xffffff);
    drawFillRect(15, 9, (41 * hp) / attribute[2], 1, rgbPixel(255, 144, 255));
    drawFillRect(15, 10, (41 * hp) / attribute[2], 1, rgbPixel(255, 32, 160));
    drawFillRect(15, 11, (41 * hp) / attribute[2], 1, rgbPixel(143, 0, 80));
    drawFillRect(74, 7, (41 * mp) / attribute[3], 1, rgbPixel(0, 144, 255));
    drawFillRect(74, 8, (41 * mp) / attribute[3], 1, 0xffffff);
    drawFillRect(74, 9, (41 * mp) / attribute[3], 1, rgbPixel(0, 216, 255));
    drawFillRect(74, 10, (41 * mp) / attribute[3], 1, rgbPixel(0, 144, 255));
    drawFillRect(74, 11, (41 * mp) / attribute[3], 1, rgbPixel(0, 32, 160));
  }

  public void drawRatioNumber(int x, int y, int cur, int max) {
    for (int divisor = 1; max / divisor != 0; ) {
      int num = (max % (divisor * 10)) / divisor;
      offScreen.setClip(x, y, 3, 5);
      drawImage(x - num * 3, y, number);
      divisor *= 10;
      x -= 4;
    }

    offScreen.setClip(x, y, 3, 5);
    drawImage(x - 30, y, number);
    x -= 4;
    for (int divisor = 1; cur / divisor != 0; ) {
      int num = (cur % (divisor * 10)) / divisor;
      offScreen.setClip(x, y, 3, 5);
      drawImage(x - num * 3, y, number);
      divisor *= 10;
      x -= 4;
    }

    offScreen.setClip(0, 0, 120, 143);
  }

  private void drawRoundBox(int refX, int refY, int width, int height,
                            int color) {
    drawFillRect(refX - 1, refY - 1, width + 2, height + 2, 0xffffff);
    drawFillRect(refX + 2, refY, width - 4, 2, 0);
    drawFillRect(refX + 2, refY + 2, width - 4, height - 4, color);
    drawFillRect(refX + 2, (refY + height) - 2, width - 4, 2, 0);
    drawFillRect(refX, refY + 2, 2, height - 4, 0);
    drawFillRect( (refX + width) - 2, refY + 2, 2, height - 4, 0);
    drawFillRect(refX + 1, refY + 1, 2, 2, 0);
    drawFillRect( (refX + width) - 3, refY + 1, 2, 2, 0);
    drawFillRect(refX + 1, (refY + height) - 3, 2, 2, 0);
    drawFillRect( (refX + width) - 3, (refY + height) - 3, 2, 2, 0);
  }

  public void cancelMenu() {
    if (stateInMenu == 110 || stateInMenu == 120) {
      enterHouse();
    } else
    if (stateInGame / 10 == 7) {
      viewItem();
    } else
    if (stateInGame == 81 || stateInGame == 82) {
      stateInGame = 80;
      stateInBattle = 0;
      drawFighting();
    } else
    if (stateInMenu == 100 || !throughMenu) {
      returnToGame();
    } else {
      drawGameMenu();
    }
  }

  public void returnToGame() {
    stateInGame = preStateInGame;
    stateInMenu = 160;
    inMenu = throughMenu = false;
    if (preStateInGame == 10) {
      if (nowVillageNb > 3) {
        drawDungeonEntrance();
      } else {
        drawStreet();
      }
    } else {
      makeDungeon();
    }
  }

  public void keyPressed(int key) {
    if (!keyEnabled) {
      return;
    }
    if (key == -13) {
      player.increaseVolume();
      player.setClip("volume.mmf");
    } else
    if (key == -14) {
      player.decreaseVolume();
      player.setClip("volume.mmf");
    }
    if (stateInGame == 10 || stateInGame == 20) {
      preStateInGame = stateInGame;
      if (key == 32) {
        player.setClip(s_click);
        drawGameMenu();
      } else
      if (key == 35) {
        player.setClip(s_click);
        viewItem();
      } else
      if (key == 42) {
        player.setClip(s_click);
        viewStatus();
      }
      if (key == -3) {

⌨️ 快捷键说明

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