📄 samkokgame.java
字号:
byte temp1 = mapCode[y1][x1];
byte temp2 = mapCode[y1][x2];
if(temp1 > 36)
temp1 -= 36;
if(temp2 > 36)
temp2 -= 36;
if(temp1 < 15 && temp1 > 0 || temp2 < 15 && temp2 > 0)
return y % 16 <= 4 || addY >= 6 ? 1 : -1;
else
return -1;
}
private void drawBlock(Graphics g)
{
g.setClip(0, 0, 176, 208);
g.drawImage(imgSkyBG, 0, 0, 0);
g.drawImage(imgSkyBG, 64, 0, 0);
g.drawImage(imgSkyBG, 128, 0, 0);
for(int y = 0; y < 8; y++)
{
for(int x = sBlockX; x < eBlockX; x++)
if(mapCode[y][x] > 36)
{
g.setClip((x << 4) + curMapX, y << 4, 16, 3);
g.setColor(206, 154, 82);
g.fillRect((x << 4) + curMapX, y << 4, 16, 3);
saTileMap.drawImage(g, (x << 4) + curMapX, y << 4, mapCode[y][x] - 36, false);
} else
if(mapCode[y][x] > 0)
saTileMap.drawImage(g, (x << 4) + curMapX, y << 4, mapCode[y][x], false);
}
}
private void drawPlayer(Graphics g)
{
int pl_effect = saPlayer.effect;
if(playerDie > 0)
return;
if(playerFight)
{
if(playerLifeOn % 4 > 2)
return;
int frame = playerFrame[fightFrameMode][playerFrameStep] % 1000;
if(playerFrame[fightFrameMode][playerFrameStep] > 1000)
if(saPlayer.effect == 0)
pl_effect = 8192;
else
pl_effect = 0;
saPlayer.drawImage(g, playerX + curMapX, playerY - 19, frame % 10, pl_effect, false);
if(weaponMode > 0)
if(pl_effect == 0)
{
if(frame > 100)
saWeaponB.drawImage(g, (playerX + curMapX) - 9, playerY - 15, frame / 10 - 10, 0, false);
else
saWeaponF.drawImage(g, playerX + curMapX + 12, playerY - 15, frame / 10, 0, false);
} else
if(frame > 100)
saWeaponB.drawImage(g, playerX + curMapX, playerY - 15, frame / 10 - 10, 8192, false);
else
saWeaponF.drawImage(g, (playerX + curMapX) - 10, playerY - 15, frame / 10, 8192, false);
if((playerMode - 4) % 3 == 2 && playerFrameStep < 3)
saEffect.drawImage(g, playerX + curMapX, playerY - 15, playerFrameStep + 4, pl_effect, false);
if(playerMode == 9 && playerFrameStep > 2)
{
int plFrame;
if(playerFrameStep <= 3)
plFrame = 7;
else
plFrame = (playerFrameStep + 8) - 4;
if(pl_effect == 0)
saEffect.drawImage(g, playerX + curMapX + 22, playerY - 15, plFrame, pl_effect, false);
else
saEffect.drawImage(g, (playerX + curMapX) - 22, playerY - 15, plFrame, pl_effect, false);
}
} else
if(playerLifeOn % 4 < 2)
saPlayer.drawImage(g, playerX + curMapX, playerY - 19, playerFrame[playerMode][playerFrameStep], false);
}
private void drawMonster(Graphics g, int i)
{
if(monsterT[i] <= 6 || monsterT[i] == 50)
{
if((monsterM[i] & 0x10) >> 4 == 1)
saEnermy.effect = 50;
else
saEnermy.effect = 0;
if(saEnermy.effect == 0)
saEnermy.drawImage(g, monsterX[i] + curMapX, monsterY[i] - 19, monsterF[i], false);
else
saEnermy.drawImage(g, monsterX[i] + curMapX, monsterY[i] - 19, monsterF[i] + 12, false);
if(monsterT[i] == 6 && monsterAddX[i] >= 10)
{
if(saEnermy.effect == 0)
saShot.drawImage(g, (monsterX[i] - 3) + curMapX, monsterY[i] - 14, 4, 0, false);
else
saShot.drawImage(g, monsterX[i] + 5 + curMapX, monsterY[i] - 14, 4, 8192, false);
} else
if(monsterT[i] == 5 || monsterT[i] == 50)
if(saEnermy.effect == 0)
{
saEnermy.drawImage(g, monsterX[i] + 17 + curMapX, monsterY[i] - 19, monsterF[i] - 2, false);
if(monsterAddX[i] >= 20 && monsterAddY[i] != 3)
saShot.drawImage(g, monsterX[i] + 14 + curMapX, monsterY[i] - 24, 2, 0, false);
} else
{
saEnermy.drawImage(g, (monsterX[i] - 17) + curMapX, monsterY[i] - 19, (monsterF[i] - 2) + 12, false);
if(monsterAddX[i] >= 20 && monsterAddY[i] != 3)
saShot.drawImage(g, (monsterX[i] - 1) + curMapX, monsterY[i] - 24, 2, 0, false);
}
} else
if(monsterT[i] <= 8)
{
if((monsterM[i] & 0x10) >> 4 == 1)
saMBoss[monsterT[i] - 7].effect = 8192;
else
saMBoss[monsterT[i] - 7].effect = 0;
saMBoss[monsterT[i] - 7].drawImage(g, monsterX[i] + curMapX, monsterY[i] - 19, monsterF[i], false);
} else
if(monsterT[i] <= 20)
saItem.drawImage(g, monsterX[i] + curMapX, monsterY[i] - 11, monsterF[i], false);
else
if(monsterT[i] <= 24 || monsterT[i] == 30 || monsterT[i] == 32)
saShot.drawImage(g, monsterX[i] + curMapX, monsterY[i] - 11, monsterF[i], false);
else
if(monsterT[i] <= 28)
{
int eff;
if(monsterAddY[i] > 0)
eff = 90;
else
if(monsterAddY[i] < 0)
eff = 270;
else
if((monsterM[i] & 0x10) >> 4 == 1)
eff = 8192;
else
eff = 0;
saShot.drawImage(g, monsterX[i] + curMapX, monsterY[i] - 11, monsterF[i], eff, false);
} else
if(monsterT[i] == 31)
{
if((monsterM[i] & 0x10) >> 4 == 1)
saShot.effect = 0;
else
saShot.effect = 8192;
saShot.drawImage(g, monsterX[i] + curMapX, (monsterY[i] - 16) + 5, monsterF[i], false);
} else
if(monsterT[i] >= 51)
{
if((monsterM[i] & 0x10) != 0)
saBoss[monsterT[i] - 51].effect = 8192;
else
saBoss[monsterT[i] - 51].effect = 0;
if(bossLifeOn % 2 == 0)
saBoss[monsterT[i] - 51].drawImage(g, monsterX[i], (monsterY[i] - 24) + 5, monsterF[i], false);
}
}
private void drawCharacter(Graphics g)
{
int drawP = 0;
for(int i = 0; i < 20; i++)
if(characterOrder[i] > 0)
{
if(monsterY[characterOrder[i] - 1] > playerY && drawP == 0)
{
drawPlayer(g);
drawP = 1;
}
drawMonster(g, characterOrder[i] - 1);
}
if(drawP == 0)
drawPlayer(g);
}
private void drawEffect(Graphics g)
{
for(int i = 0; i < 5; i++)
if(playerShotT[i] > 0)
{
if((playerShotT[i] & 0x10) >> 4 == 0)
saShot.effect = 0;
else
saShot.effect = 8192;
saShot.drawImage(g, playerShotX[i] + curMapX, (playerShotY[i] - 16) + 5, playerShotT[i] & 0xf, false);
}
for(int i = 0; i < 5; i++)
if(effectT[i] > 0)
{
if((effectT[i] & 0x10) >> 4 == 0)
saEffect.effect = 0;
else
saEffect.effect = 8192;
saEffect.drawImage(g, effectX[i] + curMapX, effectY[i] + 5, effectT[i] & 0xf, false);
}
}
private void drawInterface(Graphics g)
{
g.translate(0, -40);
g.setClip(0, 0, 176, 208);
g.setColor(0);
g.fillRect(0, 0, 176, 40);
g.fillRect(0, 168, 176, 40);
g.drawImage(imgPowerLb, 26, 10, 0);
saFace1.drawImage(g, 9, 8, playerType, false);
g.setClip(0, 0, 176, 208);
g.setColor(0, 174, 239);
g.fillRect(33, 15, (playerHP * 38) / playerMaxHP, 5);
g.setColor(222, 222, 222);
g.fillRect(33, 17, (playerHP * 38) / playerMaxHP, 1);
if(maifaHP > 0)
{
saItem.drawImage(g, 46, 27, 5, false);
saItem.drawImage(g, 62, 27, 1, false);
g.setClip(0, 0, 176, 208);
g.setColor(0, 174, 239);
g.fillRect(63, 30, (maifaHP * 14) / 15, 3);
g.setColor(222, 222, 222);
g.fillRect(63, 31, (maifaHP * 14) / 15, 1);
}
if(weaponMode > 0)
{
saItem.drawImage(g, 9, 27, (weaponMode >> 4) + 1, false);
saItem.drawImage(g, 26, 27, 1, false);
g.setClip(0, 0, 176, 208);
g.setColor(218, 0, 32);
g.fillRect(27, 30, (playerMP[(weaponMode >> 4) - 1] * 14) / playerMaxMP, 3);
g.setColor(222, 222, 222);
g.fillRect(27, 31, (playerMP[(weaponMode >> 4) - 1] * 14) / playerMaxMP, 1);
}
if(showItemName > 0)
{
g.translate(24, 40);
g.setClip(0, 0, 128, 128);
g.setColor(255, 255, 255);
g.fillRect(8, 20, 112, 20);
g.setColor(255, 194, 47);
g.fillRect(10, 22, 108, 16);
if(itemNameNumber >= 0 && itemNameNumber < 12)
drawThai(g, "??????????" + itemName[itemNameNumber], 64, 24, 0, 2);
else
drawThai(g, "?????????? ?????" + itemNameNumber, 64, 24, 0, 2);
g.translate(-24, -40);
}
if(bossStageFinish > 20)
{
g.translate(24, 40);
g.setClip(0, 0, 128, 128);
g.setFont(fontL);
g.setColor(0);
g.drawString("Stage Clear", 64, 48, 0x10 | 0x1);
g.setColor(250, 120, 0);
g.drawString("Stage Clear", 62, 46, 0x10 | 0x1);
g.translate(-24, -40);
}
if(bossHP > 0)
{
g.drawImage(imgPowerLb, 115, 10, 0);
g.setColor(255, 32, 32);
g.fillRect(122, 15, (bossHP * 38) / bossMaxHP, 5);
g.setColor(222, 222, 222);
g.fillRect(122, 17, (bossHP * 38) / bossMaxHP, 1);
saFace1.drawImage(g, 98, 8, bossType, false);
}
g.setColor(255, 255, 255);
for(int i = 0; i < 3; i++)
{
g.setClip(0, 0, 176, 208);
g.drawImage(boxItem, 5 + 28 * i, 178, 0);
if(specialType[i] > 0 || specialType[i] == -1)
saItem.drawImage(g, 11 + i * 28, 183, 10 + i, false);
}
g.translate(0, -40);
}
protected void paint(Graphics g)
{
if(levelFinish > 1)
{
g.setClip(0, 0, 176, 208);
g.setColor(0);
for(int i = 0; i < 13; i++)
g.fillRect(0, i << 4, 176, levelFinish);
} else
{
g.translate(24, 40);
switch(gameMode)
{
default:
break;
case 80: // 'P'
g.setClip(19, 34, 90, 60);
g.setColor(255, 255, 255);
g.fillRect(19, 34, 90, 60);
g.setColor(0);
g.fillRect(21, 36, 86, 56);
g.setColor(255, 255, 255);
g.setFont(fontS);
drawThai(g, "???????", 41, 36, 1, 0);
drawThai(g, "?????????", 41, 46, 1, 0);
drawThai(g, "????????", 41, 56, 1, 0);
if(parent.playSound > 0)
drawThai(g, "????? : ????", 41, 66, 1, 0);
else
drawThai(g, "????? : ???", 41, 66, 1, 0);
drawThai(g, "?????????", 41, 76, 1, 0);
g.setClip(0, 0, 176, 208);
g.setColor(255, 255, 255);
g.fillRect(34, 42 + menuSelect * 10, 5, 5);
break;
case 90: // 'Z'
g.setClip(0, 0, 128, 128);
g.setFont(fontL);
g.setColor(0);
g.drawString("Game Over", 64, 43, 0x1 | 0x10);
g.setColor(250, 120, 0);
g.drawString("Game Over", 62, 41, 0x1 | 0x10);
break;
case 10: // '\n'
g.translate(-24, 0);
if(haveDraw)
{
drawBlock(g);
drawCharacter(g);
drawEffect(g);
drawInterface(g);
haveDraw = false;
}
g.translate(24, 0);
break;
case 11: // '\013'
g.setClip(-24, -40, 176, 208);
g.setColor(0);
g.fillRect(-24, -40, 176, 208);
g.setColor(255, 255, 255);
g.setFont(fontS);
if(stageName != null)
drawThai(g, stageName, 64, 50, 1, 2);
drawThai(g, "x " + playerLife, 62, 64, 1, 0);
saFace1.drawImage(g, 42, 64, playerType, false);
break;
case 81: // 'Q'
case 82: // 'R'
g.setClip(33, 44, 62, 40);
g.setColor(255, 255, 255);
g.fillRect(33, 44, 62, 40);
g.setColor(0);
g.fillRect(35, 46, 58, 36);
g.setColor(255, 255, 255);
g.setFont(fontS);
drawThai(g, "????????????", 64, 46, 1, 2);
drawThai(g, "???", 51, 56, 1, 0);
drawThai(g, "??????", 51, 66, 1, 0);
g.setClip(0, 0, 176, 208);
g.setColor(255, 255, 255);
g.fillRect(44, 62 + menuSelect * 10, 5, 5);
break;
}
g.translate(-24, -40);
if(startLevel < 62)
{
g.setClip(0, 0, 176, 208);
g.setColor(0);
for(int i = 0; i < 13; i++)
g.fillRect(0, i << 4, 176, startLevel);
}
}
}
private void processBossStage()
{
if(mapNumber == 15)
{
if(monsterHP[0] <= 0 && bossStageFinish == 0)
{
for(int i = 1; i < maxMonster; i++)
if(monsterM[i] != 0)
{
addEffect(monsterX[i], monsterY[i], 1);
monsterM[i] = 0;
monsterTempT[i] = 0;
}
bossStageFinish = 1;
} else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -