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

📄 gamecanvas.java

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

      case 70: // 'F'
        menuStartX = 20;
        menuStartY = 45;
        menuOffset = 15;
        maxMenuNb = 4;
        menuWidth = 93;
        break;

      case 71: // 'G'
        menuStartX = 20;
        menuStartY = 29;
        menuOffset = 15;
        maxMenuNb = 5;
        menuWidth = 93;
        break;

      case 81: // 'Q'
        menuStartX = 5;
        menuStartY = 28;
        menuOffset = 16;
        maxMenuNb = 4;
        menuWidth = 107;
        break;

      case 82: // 'R'
        menuStartX = 5;
        menuStartY = 28;
        menuOffset = 16;
        maxMenuNb = 4;
        menuWidth = 107;
        break;
    }
  }

  public void drawGameMenu() {
    throughMenu = true;
    stateInGame = 50;
    stateInMenu = 100;
    inMenu = true;
    drawStatusWin();
    drawRoundBox(0, 24, 120, 119, 0xffffff);
    setMenuInfo(50, gameMenu);
    drawString("Hot", 83, 28);
    for (int i = 1; i <= 2; i++) {
      drawString("Soft".concat(String.valueOf(String.valueOf(i))), 80,
                 menuStartY + i * menuOffset);

    }
    drawMenu(false);
  }

  public void drawMenu(boolean clearScreen) {
    inMenu = true;
    if (itemName.length == 0) {
      return;
    }
    if (clearScreen) {
      drawFillRect(menuStartX, menuStartY, menuWidth, menuOffset * maxMenuNb,
                   0xffffff);
    }
    int endNb = Math.min(maxMenuNb * (menuPagePos + 1), totalMenuNb);
    for (int i = maxMenuNb * menuPagePos; i < endNb; i++) {
      drawString(itemName[i], menuStartX + 12,
                 menuStartY + menuOffset * (i - maxMenuNb * menuPagePos));

    }
    if (endNb < itemName.length) {
      drawClipImage(pointerImg, (menuStartX + menuWidth) - 7,
                    menuStartY + menuOffset * (maxMenuNb - 1) + 4, 7, 5, 0, 5);
    }
    if (menuPagePos != 0) {
      drawClipImage(pointerImg, (menuStartX + menuWidth) - 7, menuStartY + 4, 7,
                    5, 0, 0);
    }
    drawMenuCursor();
  }

  public void drawMenuCursor() {
    drawFillRect(menuStartX, menuStartY + menuOffset * menuCursorPrePos, 10, 12,
                 0xffffff);
    menuCursorPrePos = menuCursorPos;
    drawClipImage(pointerImg, menuStartX + 3,
                  menuStartY + menuOffset * menuCursorPos + 2, 7, 9, 0, 10);
    int selectedItem = menuCursorPos + menuPagePos * maxMenuNb;
    if (stateInMenu == 120 || stateInMenu == 110 || stateInGame / 10 == 7 ||
        stateInGame == 81) {
      if (stateInGame / 10 == 7) {
        drawFillRect(5, 126, 110, 12, 0xffffff);
      } else
      if (stateInGame == 81) {
        drawFillRect(5, 96, 110, 12, 0xffffff);
      } else {
        clearStoreMessage();
        itemGold = (ITEMS[itemInfo[selectedItem] / 10][itemInfo[selectedItem] %
                    10][0] >> 19 & 0xfff) * 100;
        if (stateInMenu == 120) {
          itemGold /= 5;
        }
        drawString(String.valueOf(String.valueOf( (new StringBuffer("GOLD : ")).
                                                 append(itemGold).append(" G"))),
                   6, 105);
      }
      int count = 0;
      for (int i = 0; i < attribute.length; i++) {
        int attr = (ITEMS[itemInfo[selectedItem] / 10][itemInfo[selectedItem] %
                    10][1] >> 6 * i & 0x3f) * attrMul[i];
        if (attr != 0) {
          if (stateInGame / 10 == 7) {
            drawString(String.valueOf(String.valueOf( (new StringBuffer(String.
                valueOf(String.valueOf("WeapnArmorShielRing Sell  OutHeal YNo ATKDEFH PM PHlpItmStSaveToTop A1  A2 A3   A4  A5   A6    A7   A8    S1  S2  S3   A4    A5  A6 A7  A8    R1  R2  R3 R4 R5   R7  R8  R9   SmallsMedmSupersSmallsMedmSupersSmallsMedmSupersS1S2S3S4   S5    S6    S7    S8   S9     K1K2  K3   K4  K5 K6 K7  K8  K9   K10   .".
                                       substring(attributeName[i] / 100,
                                                 attributeName[i] / 100 +
                                                 attributeName[i] % 100))))).
                append(" +").append(attr))), 10 + 50 * count, 126);
          } else
          if (stateInGame == 81) {
            drawString(String.valueOf(String.valueOf( (new StringBuffer(String.
                valueOf(String.valueOf("WeapnArmorShielRing Sell  OutHeal YNo ATKDEFH PM PHlpItmStSaveToTop A1  A2 A3   A4  A5   A6    A7   A8    S1  S2  S3   A4    A5  A6 A7  A8    R1  R2  R3 R4 R5   R7  R8  R9   SmallsMedmSupersSmallsMedmSupersSmallsMedmSupersS1S2S3S4   S5    S6    S7    S8   S9     K1K2  K3   K4  K5 K6 K7  K8  K9   K10   .".
                                       substring(attributeName[i] / 100,
                                                 attributeName[i] / 100 +
                                                 attributeName[i] % 100))))).
                append(" +").append(attr))), menuStartX + 50 * count, 96);
          } else {
            drawString(String.valueOf(String.valueOf( (new StringBuffer(String.
                valueOf(String.valueOf("WeapnArmorShielRing Sell  OutHeal YNo ATKDEFH PM PHlpItmStSaveToTop A1  A2 A3   A4  A5   A6    A7   A8    S1  S2  S3   A4    A5  A6 A7  A8    R1  R2  R3 R4 R5   R7  R8  R9   SmallsMedmSupersSmallsMedmSupersSmallsMedmSupersS1S2S3S4   S5    S6    S7    S8   S9     K1K2  K3   K4  K5 K6 K7  K8  K9   K10   .".
                                       substring(attributeName[i] / 100,
                                                 attributeName[i] / 100 +
                                                 attributeName[i] % 100))))).
                append(" +").append(attr))), 24, 117 + 12 * count);
          }
          count++;
        }
      }

    } else
    if (stateInGame == 82) {
      drawFillRect(5, 96, 108, 12, 0xffffff);
      drawString(String.valueOf(String.valueOf( (SKILL_INFO[selectedItem] >> 14 &
                                                 0x1f) * 5)).concat(
          "MP required"), menuStartX, 96);
    }
    repaintIt();
  }

  public void changeDungeonFloor(int change) {
    isMoving = false;
    nowDungeonFloor += change;
    if (nowDungeonFloor < 0) {
      characYPos = 118;
      characXPos = dungeonX[nbOfDungeon] + 5;
      drawDungeonEntrance();
    } else {
      makeDungeonFloor( (change + 1) / 2);
      makeDungeon();
    }
  }

  public void makeDungeonFloor(int up) {
    int decide = 0;
    if (nowDungeonFloor != 3) {
      int randomNb = Math.abs(ran.nextInt());
      dungeonTypeNb = randomNb % (DUNGEON_INFO.length - 1);
      randomNb = Math.abs(ran.nextInt());
      decide = randomNb % 2;
    } else {
      dungeonTypeNb = DUNGEON_INFO.length - 1;
      decide = 1;
    }
    upStairRow = DUNGEON_GATE[dungeonTypeNb][decide] >> 9 & 0x1f;
    upStairCol = DUNGEON_GATE[dungeonTypeNb][decide] >> 4 & 0x1f;
    downStairRow = DUNGEON_GATE[dungeonTypeNb][ (decide + 1) % 2] >> 9 & 0x1f;
    downStairCol = DUNGEON_GATE[dungeonTypeNb][ (decide + 1) % 2] >> 4 & 0x1f;
    if (up == 1) {
      nowDungeonNb = (downStairRow / 4) * 10 + downStairCol / 4;
    } else {
      nowDungeonNb = (upStairRow / 4) * 10 + upStairCol / 4;
    }
    characXPos = 30 * (DUNGEON_GATE[dungeonTypeNb][ (decide + up) % 2] & 3) + 4;
    characYPos = 23 +
        30 * (DUNGEON_GATE[dungeonTypeNb][ (decide + up) % 2] >> 2 & 3) + 4;
    repaintIt();
  }

  public void makeDungeon() {
    clearScreen();
    drawStatusWin();
    offScreen.setClip(0, 23, 120, 120);
    int dungeonRow = (nowDungeonNb / 10) * 4;
    int dungeonCol = (nowDungeonNb % 10) * 4;
    for (int i = dungeonRow; i < dungeonRow + 4; i++) {
      label0:
          for (int j = dungeonCol; j < dungeonCol + 4; j++) {
        if ( (DUNGEON_INFO[dungeonTypeNb][i] >> 19 - j & 1) != 0) {
          continue;
        }
        int k = 0;
        do {
          if (k >= 2) {
            continue label0;
          }
          for (int l = 0; l < 2; l++) {
            drawImage(30 * (j - dungeonCol) + 15 * l,
                      23 + 30 * (i - dungeonRow) + 15 * k, tree2);

          }
          k++;
        } while (true);
      }

    }

    for (int i = dungeonRow; i < dungeonRow + 4; i++) {
      for (int j = dungeonCol; j < dungeonCol + 4; j++) {
        if ( (DUNGEON_INFO[dungeonTypeNb][i] >> 19 - j & 1) != 0) {
          if (i != 0 && (DUNGEON_INFO[dungeonTypeNb][i - 1] >> 19 - j & 1) == 0) {
            for (int k = 0; k < 2; k++) {
              drawImage(30 * (j - dungeonCol) + 15 * k,
                        (23 + 30 * (i - dungeonRow)) - 15, tree1);

            }
          }
          if (i != 19 &&
              (DUNGEON_INFO[dungeonTypeNb][i + 1] >> 19 - j & 1) == 0) {
            for (int k = 0; k < 2; k++) {
              drawImage(30 * (j - dungeonCol) + 15 * k,
                        23 + 30 * ( (i - dungeonRow) + 1), tree1);

            }
          }
          if (j != 0 &&
              (DUNGEON_INFO[dungeonTypeNb][i] >> (19 - j) + 1 & 1) == 0) {
            for (int k = 0; k < 2; k++) {
              drawImage(30 * (j - dungeonCol) - 15,
                        23 + 30 * (i - dungeonRow) + 15 * k, tree1);

            }
          }
          if (i != 19 &&
              (DUNGEON_INFO[dungeonTypeNb][i] >> 19 - j - 1 & 1) == 0) {
            for (int k = 0; k < 2; k++) {
              drawImage(30 * ( (j - dungeonCol) + 1),
                        23 + 30 * (i - dungeonRow) + 15 * k, tree1);

            }
          }
        }
        if ( (upStairRow != i || upStairCol != j) &&
            (downStairRow != i || downStairCol != j)) {
          continue;
        }
        for (int k = 0; k < 4; k++) {
          drawFillRect(30 * (j - dungeonCol) + 3,
                       23 + 30 * (i - dungeonRow) + 4 + 6 * k, 24, 4, 0x666666);

        }
      }

    }

    drawCharacter(characDirection);
    drawFillRect(0, 128, 17, 14, 0xffffff);
    drawString(String.valueOf(String.valueOf( (new StringBuffer(String.valueOf(
        String.valueOf(nowDungeonFloor + 1)))).append("th"))), 1, 129);
    offScreen.setClip(0, 0, 120, 143);
  }

  public void dungeonCleared(int stage) {
    if (stage < 3) {
      canDungeon = Math.max(stage + 1, canDungeon);
      characYPos = 118;
      characXPos = dungeonX[nbOfDungeon] + 5;
      drawDungeonEntrance();
    } else {
      nowVillageNb = 1;
      drawStreet();
    }
    repaintIt();
  }

  public void drawStreet() {
    stateInGame = 10;
    characYPos = 110;
    drawFillRect(0, 23, 120, 60, rgbPixel(208, 255, 255));
    drawFillRect(0, 95, 120, 48, rgbPixel(208, 216, 0));
    drawCharacter(characDirection);
    drawHouse1(76, nowVillageNb - 1);
    drawStatusWin();
    repaintIt();
  }

  public void drawDungeonEntrance() {
    stateInGame = 10;
    clearScreen();
    drawFillRect(0, 23, 120, 60, rgbPixel(208, 255, 255));
    drawFillRect(0, 95, 120, 48, rgbPixel(208, 216, 0));
    drawStatusWin();
    for (int i = 0; i < 8; i++) {
      drawImage(i * 15, 63, dunbrick2);

    }
    for (int i = 0; i < 12; i++) {
      for (int j = 0; j < 3; j++) {
        drawImage(i * 10, 71 + 10 * j, dunbrick1);

      }
    }

    for (int i = 0; i <= canDungeon; i++) {
      drawImage(dungeonX[i] + 4, 80, dungate);

    }
    characYPos = 110;
    drawCharacter(characDirection);
    repaintIt();
  }

  public void changePlace(int direction) {
    if (nowVillageNb + direction >= 1 && nowVillageNb + direction <= 4) {
      nowVillageNb += direction;
      characXPos = direction <= 0 ? 100 : 0;
      if (nowVillageNb == 4) {
        drawDungeonEntrance();
      } else {
        drawStreet();
      }
    } else {
      characXPos -= 3 * direction;
    }
  }

  public void enterHouse() {
    stateInGame = 30 + nowVillageNb;
    stateInMenu = 100;
    clearScreen();
    drawStatusWin();
    drawRoundBox(0, 24, 120, 65, 0xffffff);
    drawRoundBox(0, 102, 120, 41, rgbPixel(208, 255, 255));
    drawStringRight(String.valueOf(String.valueOf(gold)).concat(" G"), 116, 90);
    switch (stateInGame) {
      default:
        break;

      case 33: // '!'
        if (afterSleep) {
          drawString("Thank you.", 4, 105);
        } else {
          setMenuInfo(0, innMenu);
          drawMenu(false);
          drawString("(^.^) Wanna", 4, 105);
          drawString("Rest?", 4, 118);
        }
        break;

      case 31: // '\037'
      case 32: // ' '
        setMenuInfo(0, storeMenu[stateInGame - 31]);
        drawMenu(false);
        drawString("(^.^) May I", 4, 105);
        drawString("help you?", 4, 118);
        break;

⌨️ 快捷键说明

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