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

📄 seafox.java

📁 经典的潜艇打商船游戏
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        m_nMouseX = i;
        m_nMouseY = j;
        m_bButtonDown = false;
        return true;
    }

    public void run() {                              
        if(!m_bInitialized)
            Initialization();
        do {
            if(m_bGameOver && m_bButtonDown)
                StartNewGame();
            UpdateGameObjects();
            DrawPlayfield();
            boolean flag = UpdateScorebar();
            if(m_bSoundEffectsOn && !m_bGameOver)
                PlaySoundEffects();
            Graphics g = getGraphics();
            g.drawImage(m_bufferPlayfield, 0, 0, null);
            if(flag)
                g.drawImage(m_bufferScorebar, 0, m_nPlayfieldHeight, null);
            g.dispose();
        } while(true);
    }

    private void DrawProgressBar(int i, int j, int k, int l, double d) {
        Graphics g = m_imageLoading.getGraphics();
        g.setColor(Color.blue);
        g.fillRect(i, j, (int)((double)k * d), l);
        g.dispose();
        Graphics g1 = getGraphics();
        g1.drawImage(m_imageLoading, 0, 0, null);
        g1.dispose();
    }

    private void DrawPlayfield() {                    //重画游戏画面
        Graphics g = m_bufferPlayfield.getGraphics();
        g.drawImage(m_bufferSurface, 0, 0, null);
        g.setColor(UNDERWATER_COLOR);
        g.fillRect(0, 60, m_nPlayfieldWidth, m_nPlayfieldHeight - 60);
        m_verticalTorpedo.Draw(g);
        m_horizontalTorpedo.Draw(g);
        m_player.Draw(g);
        m_killerFish.Draw(g);
        int i = 0;
        do
            m_capitalShip[i].Draw(g);
        while(++i < 10);
        i = 0;
        do
            m_hospitalShip[i].Draw(g);
        while(++i < 3);
        i = 0;
        do
            m_destroyer[i].Draw(g);
        while(++i < 3);
        i = 0;
        do
            m_depthCharge[i].Draw(g);
        while(++i < 3);
        i = 0;
        do
            m_enemySub[i].Draw(g);
        while(++i < 3);
        i = 0;
        do
            m_enemyTorpedo[i].Draw(g);
        while(++i < 3);
        i = 0;
        do
            m_magneticMine[i].Draw(g);
        while(++i < 3);
        m_dolphin.Draw(g);
        m_package.Draw(g);
        m_supplySub.Draw(g);
        if(Player.m_nStatus == 4) {
            g.setFont(m_fontMessage);
            g.setColor(m_colorMessage);
            g.drawString(m_stringSubsLeft[m_nSubsLeft - 1], m_nXsubsLeft[m_nSubsLeft - 1], m_nYsubsLeft);
        }
        if(m_bDisplayMissionTitle) {
            g.setFont(m_fontMessage);
            g.setColor(m_colorMessage);
            g.drawString(m_stringMissionTitle, m_nXmissionTitle, m_nYmissionTitle);
        }
        if(Player.m_nStatus == 3 && !m_bGameOver) {
            g.setFont(m_fontMessage);
            g.setColor(m_colorMessage);
            g.drawString(m_stringMissionComplete, m_nXmissionComplete, m_nYmissionComplete);
        }
        if(Player.m_nStatus == 0 && Player.m_dFuel <= 0.0D) {
            g.setFont(m_fontMessage);
            g.setColor(m_colorMessage);
            g.drawString(m_stringOutOfFuel, m_nXoutOfFuel, m_nYoutOfFuel);
        }
        if(m_bGameOver) {
            g.setFont(m_fontMessage);
            g.setColor(m_colorMessage);
            if(m_nTimesPlayed > 0)
                g.drawString(m_stringGameOver, m_nXgameOver, m_nYgameOver);
            g.drawString(m_stringStart, m_nXstartString, m_nYstartString);
        }
    }

    private void UpdateGameObjects() {
        m_lLatestTime = System.currentTimeMillis();
        int i = m_nFrameNumber % 10;
        if(m_nFrameNumber > 10) {
            int j = (int)(m_lLatestTime - m_lTime[i]);
            m_dSecondsPerFrame = (double)j / 10D / 1000D;
        } else {
            m_dSecondsPerFrame = 0.10000000000000001D;
        }
        m_lTime[i] = m_lLatestTime;
        m_nFrameNumber++;
        if(m_player.m_lRestartTime != 0L && m_player.m_lRestartTime < m_lLatestTime)
            if(m_nSubsLeft > 0) {
                if(m_nMission >= 5 && m_bMissionComplete) {
                    m_bMissionComplete = false;
                    m_bGameOver = true;
                    m_nSubsLeft = 0;
                } else {
                    if(m_bMissionComplete) {        //发射数<5,发射完成
                        m_nMission++;
                        MissionInit();
                        m_bMissionComplete = false;
                    }
                    SubInit();
                }
            } else {
                m_bGameOver = true;
                m_bMissionComplete = false;
            }
        m_player.Update();
        m_killerFish.Update();
        CapitalShip.m_dXoriginNow = CapitalShip.m_dXoriginStart + (20D * (double)(m_lLatestTime - CapitalShip.m_lStartTime)) / 1000D;
        HospitalShip.m_dXoriginNow = HospitalShip.m_dXoriginStart + (24D * (double)(m_lLatestTime - HospitalShip.m_lStartTime)) / 1000D;
        int k = 0;
        do
            m_destroyer[k].Update();
        while(++k < 3);
        k = 0;
        do
            m_depthCharge[k].Update();
        while(++k < 3);
        k = 0;
        do
            m_enemySub[k].Update();
        while(++k < 3);
        k = 0;
        do
            m_enemyTorpedo[k].Update();
        while(++k < 3);
        k = 0;
        do
            m_magneticMine[k].Update();
        while(++k < 3);
        m_supplySub.Update();
        m_dolphin.Update();
        m_package.Update();
        m_verticalTorpedo.Update();
        m_horizontalTorpedo.Update();
    }

    public void paint(Graphics g) {
        if(!m_bInitialized) {
            return;
        } else {
            g.drawImage(m_bufferScorebar, 0, m_nPlayfieldHeight, null);
            return;
        }
    }

    private void Initialization() {                                   //调用图片.声音.构造装载框
        Player.m_imageSub = getImage(getDocumentBase(), "plr_sub.gif");
        m_mediaTracker.addImage(Player.m_imageSub, 0);
        CapitalShip.m_imageShip[0] = getImage(getDocumentBase(), "capship0.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageShip[0], 1);
        CapitalShip.m_imageShip[1] = getImage(getDocumentBase(), "capship1.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageShip[1], 2);
        CapitalShip.m_imageShip[2] = getImage(getDocumentBase(), "capship2.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageShip[2], 3);
        CapitalShip.m_imageShip[3] = getImage(getDocumentBase(), "capship3.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageShip[3], 4);
        CapitalShip.m_imageWake[0] = getImage(getDocumentBase(), "lt_wake0.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageWake[0], 5);
        CapitalShip.m_imageWake[1] = getImage(getDocumentBase(), "lt_wake1.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageWake[1], 6);
        CapitalShip.m_imageWake[2] = getImage(getDocumentBase(), "lt_wake2.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageWake[2], 7);
        CapitalShip.m_imageWake[3] = getImage(getDocumentBase(), "lt_wake3.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageWake[3], 8);
        HospitalShip.m_imageShip = getImage(getDocumentBase(), "hospship.gif");
        m_mediaTracker.addImage(HospitalShip.m_imageShip, 9);
        VerticalTorpedo.m_imageUp = getImage(getDocumentBase(), "utorpedo.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageUp, 10);
        VerticalTorpedo.m_imageDown = getImage(getDocumentBase(), "dtorpedo.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageDown, 11);
        VerticalTorpedo.m_imageUpWake[0] = getImage(getDocumentBase(), "up_wake0.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageUpWake[0], 12);
        VerticalTorpedo.m_imageUpWake[1] = getImage(getDocumentBase(), "up_wake1.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageUpWake[1], 13);
        VerticalTorpedo.m_imageUpWake[2] = getImage(getDocumentBase(), "up_wake2.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageUpWake[2], 14);
        VerticalTorpedo.m_imageUpWake[3] = getImage(getDocumentBase(), "up_wake3.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageUpWake[3], 15);
        VerticalTorpedo.m_imageDownWake[0] = getImage(getDocumentBase(), "dn_wake0.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageDownWake[0], 16);
        VerticalTorpedo.m_imageDownWake[1] = getImage(getDocumentBase(), "dn_wake1.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageDownWake[1], 17);
        VerticalTorpedo.m_imageDownWake[2] = getImage(getDocumentBase(), "dn_wake2.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageDownWake[2], 18);
        VerticalTorpedo.m_imageDownWake[3] = getImage(getDocumentBase(), "dn_wake3.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageDownWake[3], 19);
        CapitalShip.m_imageBlast[0] = getImage(getDocumentBase(), "csblast0.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageBlast[0], 20);
        CapitalShip.m_imageBlast[1] = getImage(getDocumentBase(), "csblast1.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageBlast[1], 21);
        CapitalShip.m_imageBlast[2] = getImage(getDocumentBase(), "csblast2.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageBlast[2], 22);
        CapitalShip.m_imageBlast[3] = getImage(getDocumentBase(), "csblast3.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageBlast[3], 23);
        CapitalShip.m_imageSink[0] = getImage(getDocumentBase(), "cs_sink0.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageSink[0], 24);
        CapitalShip.m_imageSink[1] = getImage(getDocumentBase(), "cs_sink1.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageSink[1], 25);
        CapitalShip.m_imageSink[2] = getImage(getDocumentBase(), "cs_sink2.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageSink[2], 26);
        CapitalShip.m_imageSink[3] = getImage(getDocumentBase(), "cs_sink3.gif");
        m_mediaTracker.addImage(CapitalShip.m_imageSink[3], 27);
        SupplySub.m_imageSub = getImage(getDocumentBase(), "sply_sub.gif");
        m_mediaTracker.addImage(SupplySub.m_imageSub, 28);
        Dolphin.m_imageDolphin[0] = getImage(getDocumentBase(), "dolphin0.gif");
        m_mediaTracker.addImage(Dolphin.m_imageDolphin[0], 29);
        Dolphin.m_imageDolphin[1] = getImage(getDocumentBase(), "dolphin1.gif");
        m_mediaTracker.addImage(Dolphin.m_imageDolphin[1], 30);
        Dolphin.m_imageDolphin[2] = getImage(getDocumentBase(), "dolphin2.gif");
        m_mediaTracker.addImage(Dolphin.m_imageDolphin[2], 31);
        Dolphin.m_imageDolphin[3] = getImage(getDocumentBase(), "dolphin3.gif");
        m_mediaTracker.addImage(Dolphin.m_imageDolphin[3], 32);
        Package.m_imagePackage = getImage(getDocumentBase(), "package.gif");
        m_mediaTracker.addImage(Package.m_imagePackage, 33);
        VerticalTorpedo.m_imageBlast[0] = getImage(getDocumentBase(), "vtblast0.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageBlast[0], 34);
        VerticalTorpedo.m_imageBlast[1] = getImage(getDocumentBase(), "vtblast1.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageBlast[1], 35);
        VerticalTorpedo.m_imageBlast[2] = getImage(getDocumentBase(), "vtblast2.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageBlast[2], 36);
        VerticalTorpedo.m_imageBlast[3] = getImage(getDocumentBase(), "vtblast3.gif");
        m_mediaTracker.addImage(VerticalTorpedo.m_imageBlast[3], 37);
        KillerFish.m_imageFish = getImage(getDocumentBase(), "klr_fsh0.gif");
        m_mediaTracker.addImage(KillerFish.m_imageFish, 38);
        m_imageWater = getImage(getDocumentBase(), "water.gif");
        m_mediaTracker.addImage(m_imageWater, 39);
        Destroyer.m_imageShip = getImage(getDocumentBase(), "destroyr.gif");
        m_mediaTracker.addImage(Destroyer.m_imageShip, 40);
        Destroyer.m_imageWake[0] = getImage(getDocumentBase(), "rt_wake0.gif");
        m_mediaTracker.addImage(Destroyer.m_imageWake[0], 41);
        Destroyer.m_imageWake[1] = getImage(getDocumentBase(), "rt_wake1.gif");
        m_mediaTracker.addImage(Destroyer.m_imageWake[1], 42);
        Destroyer.m_imageWake[2] = getImage(getDocumentBase(), "rt_wake2.gif");
        m_mediaTracker.addImage(Destroyer.m_imageWake[2], 43);
        Destroyer.m_imageWake[3] = getImage(getDocumentBase(), "rt_wake3.gif");
        m_mediaTracker.addImage(Destroyer.m_imageWake[3], 44);
        DepthCharge.m_imageBlast[0] = getImage(getDocumentBase(), "dcblast0.gif");
        m_mediaTracker.addImage(DepthCharge.m_imageBlast[0], 45);
        DepthCharge.m_imageBlast[1] = getImage(getDocumentBase(), "dcblast1.gif");
        m_mediaTracker.addImage(DepthCharge.m_imageBlast[1], 46);
        DepthCharge.m_imageBlast[2] = getImage(getDocumentBase(), "dcblast2.gif");
        m_mediaTracker.addImage(DepthCharge.m_imageBlast[2], 47);
        DepthCharge.m_imageBlast[3] = getImage(getDocumentBase(), "dcblast3.gif");
        m_mediaTracker.addImage(DepthCharge.m_imageBlast[3], 48);
        DepthCharge.m_imageSplash[0] = getImage(getDocumentBase(), "splash0.gif");
        m_mediaTracker.addImage(DepthCharge.m_imageSplash[0], 49);
        DepthCharge.m_imageSplash[1] = getImage(getDocumentBase(), "splash1.gif");
        m_mediaTracker.addImage(DepthCharge.m_imageSplash[1], 50);
        DepthCharge.m_imageSplash[2] = getImage(getDocumentBase(), "splash2.gif");
        m_mediaTracker.addImage(DepthCharge.m_imageSplash[2], 51);
        DepthCharge.m_imageSplash[3] = getImage(getDocumentBase(), "splash3.gif");
        m_mediaTracker.addImage(DepthCharge.m_imageSplash[3], 52);
        EnemySub.m_imageSub = getImage(getDocumentBase(), "enemysub.gif");
        m_mediaTracker.addImage(EnemySub.m_imageSub, 53);
        EnemyTorpedo.m_imageTorpedo = getImage(getDocumentBase(), "enemytor.gif");
        m_mediaTracker.addImage(EnemyTorpedo.m_imageTorpedo, 54);
        EnemyTorpedo.m_imageWake[0] = getImage(getDocumentBase(), "et_wake0.gif");
        m_mediaTracker.addImage(EnemyTorpedo.m_imageWake[0], 55);
        EnemyTorpedo.m_imageWake[1] = getImage(getDocumentBase(), "et_wake1.gif");
        m_mediaTracker.addImage(EnemyTorpedo.m_imageWake[1], 56);
        EnemyTorpedo.m_imageWake[2] = getImage(getDocumentBase(), "et_wake2.gif");
        m_mediaTracker.addImage(EnemyTorpedo.m_imageWake[2], 57);
        EnemyTorpedo.m_imageWake[3] = getImage(getDocumentBase(), "et_wake3.gif");
        m_mediaTracker.addImage(EnemyTorpedo.m_imageWake[3], 58);
        HorizontalTorpedo.m_imageTorpedo = getImage(getDocumentBase(), "htorpedo.gif");
        m_mediaTracker.addImage(HorizontalTorpedo.m_imageTorpedo, 59);
        MagneticMine.m_imageMine = getImage(getDocumentBase(), "mag_mine.gif");
        m_mediaTracker.addImage(MagneticMine.m_imageMine, 60);
        Dimension dimension = size();
        m_nWindowWidth = dimension.width;
        m_nWindowHeight = dimension.height;
        m_imageLoading = createImage(dimension.width, dimension.height);
        Graphics g = m_imageLoading.getGraphics();
        char c = '\310';
        byte byte0 = 30;
        byte byte1 = 2;
        int i = (dimension.width - c) / 2;
        int j = (dimension.height * 2) / 3 - byte0 / 2;
        int k = i + byte1;
        int l = j + byte1;
        int i1 = c - 2 * byte1;
        int j1 = byte0 - 2 * byte1;
        int k1 = 61;
        int l1 = -1;
        g.setColor(Color.white);
        g.fillRect(0, 0, dimension.width, dimension.height);
        g.setColor(Color.black);
        g.setFont(new Font("Helvetica", 1, 24));
        FontMetrics fontmetrics = g.getFontMetrics();
        String s = "Torpedo Alley";
        int j2 = (dimension.width - fontmetrics.stringWidth(s)) / 2;
        int k2 = dimension.height / 3;
        g.drawString(s, j2, k2);
        k2 += fontmetrics.getDescent();
        g.setFont(new Font("Helvetica", 0, 14));
        fontmetrics = g.getFontMetrics();
        k2 += fontmetrics.getAscent() + fontmetrics.getLeading();
        String s1 = "loading now...";
        j2 = (dimension.width - fontmetrics.stringWidth(s1)) / 2;
        g.drawString(s1, j2, k2);
        int l2 = k2 + fontmetrics.getDescent();

⌨️ 快捷键说明

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