📄 gamecanvas.java
字号:
}
}
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 + -