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

📄 samkokgame.java

📁 俄罗斯制作的横版动作游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            {
                if(bossStageFinish > 0)
                    bossStageFinish++;
                if(bossStageFinish >= 41)
                    levelFinish = 2;
            }
        } else
        {
            if(bossStageFinish > 0)
                bossStageFinish++;
            if(bossStageFinish >= 41)
                levelFinish = 2;
        }
    }

    private void processFloor()
    {
        if(playerJump && playerAddY > 0)
        {
            playerJump = false;
            playerTempJump = false;
            playerAddY = 0;
            playerY = (playerY >> 4) << 4;
            if(!playerFight)
                if(playerAddX == 0)
                {
                    playerMode = 0;
                    playerFrameStep = 0;
                } else
                if(playerAddX > 0)
                    processMoveX(5);
                else
                    processMoveX(2);
        }
    }

    private void processMoveAdd()
    {
        processMonster();
        processEffectMove();
        playerFrameStep++;
        frameStep = 0;
        if(playerLifeOn > 0)
            playerLifeOn--;
        if(bossLifeOn > 0)
            bossLifeOn--;
        if(showItemName > 0)
            showItemName--;
        if(playerDie > 0)
        {
            playerDie--;
            if(playerDie == 0)
            {
                playerDie = -1;
                if(playerHP > 0 && playerX < mapSizeX << 3)
                    restartGame(0, 96, false);
                else
                if(playerHP > 0 && mapNumber == 32)
                    restartGame(mapSizeX << 3, 64, false);
                else
                if(playerHP > 0)
                    restartGame(mapSizeX << 3, 96, false);
                else
                if(playerLife > 0)
                {
                    playerLife--;
                    if(mapNumber == 15)
                        restartGame(0, 64, true);
                    else
                        restartGame(0, 96, true);
                } else
                {
                    gameOver = true;
                    gameMode = 90;
                }
            }
            playerAddX = 0;
            playerAddY = 0;
            return;
        }
        for(int i = 0; i < 3; i++)
            if(specialType[i] > 0)
            {
                specialType[i]--;
                if(specialType[i] == 0)
                    if(i == 2)
                        playerWalkStep = 3;
                    else
                    if(i == 1)
                        playerAttack = 1;
            }

        if(playerFight)
        {
            if(playerFrame[fightFrameMode][playerFrameStep] == 0)
            {
                playerFrameStep = 0;
                playerAddX = 0;
                playerFight = false;
                if(playerNextMode >= 4)
                {
                    playerFight = true;
                    playerNextMode = 0;
                    if(playerNextFight >= 2)
                    {
                        setFightAction(weaponMode, 2);
                        playerNextFight = 0;
                    } else
                    {
                        setFightAction(weaponMode, 1);
                    }
                } else
                if(playerJump)
                {
                    playerMode = 1;
                    playerNextFight = 0;
                } else
                {
                    playerMode = 0;
                    playerNextFight = 0;
                }
                fightTime = System.currentTimeMillis();
            } else
            if(playerMode == 6 && playerFrameStep == 1)
                addPlayerShot();
            else
            if(playerMode == 12 && playerFrameStep >= 12)
                playerAddX = 0;
            else
                processAddAttack();
        } else
        if(playerFrame[playerMode][playerFrameStep] == 0 && playerMode == 2)
        {
            playerAddX = nextAddX;
            if(playerAddX == 0 && playerAddY == 0)
                playerMode = 0;
            else
            if(playerAddY != 0)
                playerMode = 1;
            else
                playerMode = 1;
            playerFrameStep = 0;
        } else
        if(playerFrame[playerMode][playerFrameStep] == 0 || playerFrameStep >= 15)
            playerFrameStep = 0;
    }

    private void processNext()
    {
        if(startLevel <= 60)
        {
            startLevel -= 2;
            if(startLevel == -2)
                startLevel = 62;
            return;
        }
        if(levelFinish > 0)
            processFinish();
        else
            switch(gameMode)
            {
            default:
                break;

            case 10: // '\n'
                if(System.currentTimeMillis() - gameTime > 50L)
                {
                    gameTime = System.currentTimeMillis();
                    haveDraw = true;
                    if(playerMode == 12 && playerFrameStep >= 3 || playerMode != 12)
                        playerX += playerAddX;
                    playerY += playerAddY;
                    if(playerMode == 9 && playerFrameStep >= 1 && playerFrameStep < 5)
                        if(saPlayer.effect == 0)
                            playerX += 4;
                        else
                            playerX -= 4;
                    if(playerX < 0)
                        playerX = 0;
                    else
                    if(bossStage && playerX > 152)
                        playerX = 152;
                    GenCurMap();
                    frameStep = 0;
                    if(frameStep % 2 == 0)
                        processMoveAdd();
                    int tempInt = checkFloor(playerX, playerY, 8, playerAddY);
                    if(tempInt == 2)
                    {
                        if(!bossStage)
                        {
                            levelFinish = 1;
                            playerMode = 1;
                            playerFrameStep = 0;
                        }
                    } else
                    if(tempInt < 0)
                    {
                        if(!playerJump)
                        {
                            playerJump = true;
                            playerAddY = 1;
                            playerMode = 1;
                            playerFrameStep = 0;
                        } else
                        if(playerY > 128)
                        {
                            processHPDown(2);
                            playerDie = 20;
                            playerY = 1;
                        }
                    } else
                    {
                        processFloor();
                    }
                    if(playerJump)
                        playerAddY++;
                    processCheckChonME();
                    if(playerMode == 2)
                        playerAtt = false;
                    if(playerAtt && frameStep == 0)
                    {
                        if(processCheckAttack() == 1)
                            playerNextFight++;
                        playerAtt = false;
                    }
                    processCheckShot();
                    processOrder();
                    if(bossStage)
                        processBossStage();
                }
                break;

            case 11: // '\013'
                if(System.currentTimeMillis() - gameTime <= 50L)
                    break;
                gameTime = System.currentTimeMillis();
                startStage++;
                if(startStage >= 60)
                    levelFinish = 2;
                break;
            }
    }

    private void processFinish()
    {
        if(levelFinish == 1)
        {
            if(System.currentTimeMillis() - gameTime > 50L)
            {
                playerX += 3;
                playerMode = 1;
                playerFrameStep += playerFrameStep >= 3 ? -3 : 1;
            }
            if(playerX >= mapSizeX << 4)
                levelFinish = 2;
        } else
        if(levelFinish > 1)
        {
            levelFinish += 2;
            if(levelFinish >= 20)
                if(gameMode == 10)
                {
                    curLevel++;
                    if(parent.playSound > 0 && gameMusic != null)
                        try
                        {
                            gameMusic.close();
                        }
                        catch(Exception ioe) { }
                    initLevel(curLevel);
                } else
                if(gameMode == 11)
                {
                    levelFinish = 0;
                    startLevel = 60;
                    gameMode = 10;
                    loadSound(mapSound[curLevel], true);
                }
        }
    }

    private void processOrder()
    {
        for(int j = 0; j < 20; j++)
            characterOrder[j] = 0;

        int maxDraw = 0;
        for(int i = 0; i < maxMonster + 5; i++)
            if(monsterM[i] > 0 && monsterX[i] + curMapX > -64 && monsterX[i] + curMapX < 240 && monsterT[i] > 0)
            {
                characterOrder[maxDraw] = (byte)(i + 1);
                maxDraw++;
            }

        for(int j = 0; j < maxDraw - 1; j++)
        {
            for(int i = j; i < maxDraw; i++)
                if(monsterY[characterOrder[i] - 1] < monsterY[characterOrder[j] - 1])
                {
                    byte tempByte = characterOrder[i];
                    characterOrder[i] = characterOrder[j];
                    characterOrder[j] = tempByte;
                }

        }

    }

    private void processEffectMove()
    {
        for(int i = 0; i < 5; i++)
        {
            if(playerShotT[i] > 0)
            {
                if((playerShotT[i] & 0x10) >> 4 == 0)
                    playerShotX[i] += 8;
                else
                    playerShotX[i] -= 8;
                if(playerShotX[i] + curMapX >= 176)
                    playerShotT[i] = 0;
                else
                if(playerShotX[i] + curMapX <= -24)
                    playerShotT[i] = 0;
            }
            if(effectT[i] > 0)
                if(effectT[i] % 3 == 0)
                    effectT[i] = 0;
                else
                    effectT[i]++;
        }

    }

    private void addEffect(int x, int y, int type)
    {
        for(int i = 0; i < 5; i++)
            if(effectT[i] == 0)
            {
                type--;
                effectX[i] = (short)x;
                effectY[i] = (short)(y - 5);
                effectT[i] = (byte)(type * 3 + 1);
                i = 5;
            }

    }

    private void processCheckShot()
    {
        int targetH = 0;
        for(int i = 0; i < 5; i++)
            if(playerShotT[i] > 0)
            {
                int shotX = playerShotX[i] + 4;
                int shotY = playerShotY[i] - 14;
                int shotW = 12;
                int shotH = 13;
                for(int j = 0; j < maxMonster + 5; j++)
                    if(monsterM[j] > 0 && (monsterM[j] & 0xf) != 2 && (monsterM[j] & 0xf) < 6 && monsterX[j] + curMapX > -24 && monsterX[j] + curMapX < 176)
                    {
                        int targetX = monsterX[j] - 4;
                        int targetW = 16;
                        switch(monsterT[j])
                        {
                        case 1: // '\001'
                            targetH = 11;
                            break;

                        case 2: // '\002'
                            targetH = 17;
                            break;

                        case 3: // '\003'
                        case 4: // '\004'
                        case 7: // '\007'
                        case 8: // '\b'
                            targetH = 21;
                            break;

                        case 5: // '\005'
                        case 50: // '2'
                            targetH = 18;
                            break;

                        case 6: // '\006'
                            targetH = 21;
                            break;

                        case 25: // '\031'
                        case 26: // '\032'
                        case 27: // '\033'
                        case 28: // '\034'
                            targetH = 5;
                            break;

                        case 31: // '\037'
                            targetH = 16;
                            break;

                        case 51: // '3'

⌨️ 快捷键说明

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