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

📄 samkokgame.java

📁 俄罗斯制作的横版动作游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        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 + -