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

📄 bosscanvas.java

📁 一个基于JAVA的手机射击类游戏``有过关模式
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                            spaceBarge[j].setVisible(false);
                            break;
                        }
                    }
                    //击中监督者
                    for(int j =0; j< SUPERVISORCOUNTS; j++){
                        if (missile[i].collidesWith(supervisor[j], true)) {
                            addExplosion(supervisor[j]);
                            playerScores = playerScores + 10;
                            missile[i].setVisible(false);
                            supervisor[j].setVisible(false);
                            break;
                        }
                    }
                    //击中杀手卫星
                    for(int j =0; j< KILLERSATELLITESCOUNTS; j++){
                        if (missile[i].collidesWith(killerSatellites[j], true)) {
                            addExplosion(killerSatellites[j]);
                            playerScores = playerScores + 10;
                            missile[i].setVisible(false);
                            killerSatellites[j].setVisible(false);
                            break;
                        }
                    }
                    
                }
                // boss开火
                else if (missile[i].getFrame() == 3){
                    missile[i].move(0, 5);
                    if (missile[i].collidesWith(playerPlane, true)) {
                        addExplosion(playerPlane);
                        playerHP = playerHP - 5;
                        missile[i].setVisible(false);
                    }
                } else if (missile[i].getFrame() == 4) {
                    missile[i].move(0, 5);
                    if (missile[i].collidesWith(playerPlane, true)) {
                        addExplosion(playerPlane);
                        playerHP = playerHP - 5;
                        missile[i].setVisible(false);
                    }
                } else if (missile[i].getFrame() == 8) {
                    missile[i].move(0, 7);
                    if (missile[i].collidesWith(playerPlane, true)) {
                        addExplosion(playerPlane);
                        playerHP = playerHP - 5;
                        missile[i].setVisible(false);
                    }
                } else if (missile[i].getFrame() == 12) {
                    missile[i].move(0, 5);
                    if (missile[i].collidesWith(playerPlane, true)) {
                        addExplosion(playerPlane);
                        playerHP = playerHP - 5;
                        missile[i].setVisible(false);
                    }
                }
                // 加人
                else if (missile[i].getFrame() == 13) {
                    missile[i].move(0, 3);
                    if (missile[i].collidesWith(playerPlane, true)) {
                        playerLifeCounts = Math.min(playerLifeCounts + 1, 9);
                        missile[i].setVisible(false);
                    }
                }
                // 加血
                else if (missile[i].getFrame() == 9) {
                    missile[i].move(0, 2);
                    if (missile[i].collidesWith(playerPlane, true)) {
                        playerHP = Math.min(playerHP + 5, 70);
                        missile[i].setVisible(false);
                    }
                }
                missile[i].checkBounds();
            }
        }
        // =============导弹处理end==================
        updateInfo();
        
    }
    public void checkBounds(GameSprites sprites, int action) {
        if (action == GameSprites.BOUNCE) {
            if (sprites.getX() < -sprites.getWidth()) {
                sprites.setPosition(0, sprites.getY());
            } else if (sprites.getX() > getWidth() + sprites.getWidth() / 2) {
                sprites.setPosition(getWidth() - sprites.getWidth(), sprites
                        .getY());
            }
        }
    }
    
    public void updateInfo() {
        if (playerHP <= 0) {
            playerLifeCounts = playerLifeCounts - 1;
            playerHP = 70;
        }
        if (playerLifeCounts == 0) {
            playerHP = 0;
            bossThread = null;
            missionBossGameOver = false;
            isWin = false;
            dragonMidlet.backToMenu();
            Dragon.MISSIONCOUNTS = -1;
            Dragon.showMenu = true;
        }
        if (bossHP <= 0) {
            bossThread = null;
            missionBossGameOver = true;
            isWin = true;
            Dragon.MISSIONCOUNTS = Dragon.MISSIONOVER;
        }
    }
    
    public void topInfoBar(Graphics g) {
        g.setColor(0x999999);// 设定状态栏背景色是浅灰色
        g.fillRect(0, 0, infoBarWidth, infoBarHeight);// 设定状态栏大小
        g.drawImage(bossIconImage, 0, 0, Graphics.LEFT | Graphics.TOP);// 绘制Boss1头标
        g.setColor(0xff0000);
        g.drawRect(20, 4, 140, 8);
        g.setColor(0xccff33);
        if (bossHP < 40) {
            g.setColor(0xff0000);
        }
        g.fillRect(20, 4, bossHP, 8);// 绘制boss
        
    }
    
    public void bottomInfoBar(Graphics g) {
        g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
                Font.SIZE_SMALL));
        // ===============绘制底部状态栏start===============
        g.setColor(0x999999);// 设定状态栏背景色是浅灰色
        g.fillRect(0, getHeight() - 20, infoBarWidth, infoBarHeight);// 设定状态栏大小
        
        g.drawImage(playerIconImage, 0, getHeight() - 20, Graphics.LEFT
                | Graphics.TOP);// 绘制player头标
        
        g.setColor(0);
        g.drawString(Integer.toString(playerLifeCounts), 20, getHeight() - 15,
                Graphics.LEFT | Graphics.TOP);// 绘制生命数字符串
        
        g.drawRect(30, getHeight() - 16, 70, 8);
        g.setColor(0xccff00);
        if (playerHP < 20) {
            g.setColor(0xff0000);
        }
        g.fillRect(30, getHeight() - 16, playerHP, 8);// 绘制player血槽
        
        g.setColor(0);// 设定字体颜色
        g.drawString("SCORE:", 104, getHeight() - 18, Graphics.LEFT
                | Graphics.TOP);// 绘制SCORES字符串
        g.drawString(Integer.toString(playerScores), 142, getHeight() - 18,
                Graphics.LEFT | Graphics.TOP);// 绘制SCORES
        
    }
    
    protected void drawIt(Graphics g) {
        g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
                Font.SIZE_SMALL));
        g.drawImage(backgroundImage, 0, 0, Graphics.LEFT | Graphics.TOP);
        
        topInfoBar(g);// 顶部信息栏
        missileVisibleCounts(g);
        bossCanvasLayer.paint(g, 0, 0);// 游戏主画面
        bottomInfoBar(g);// 底部信息栏
        
        if (stringShowCounts <= 38) {// 因为rate=40所以38表示1.5s,50表示2s
            g.setColor(0xff0000);
            g.drawString("Mission Boss", getWidth() / 2 - 35,
                    getHeight() / 2 - 10, Graphics.LEFT | Graphics.TOP);
            g.drawString("Bloody Reverse", getWidth() / 2 - 50,
                    getHeight() / 2 + 10, Graphics.LEFT | Graphics.TOP);
            
        }
        
        if (missionBossGameOver) {
            g.setColor(0xff0000);
            g.drawString("mission Boss", getWidth() / 2 - 35,
                    getHeight() / 2 - 10, Graphics.LEFT | Graphics.TOP);
            if (isWin) {
                g.setColor(0xff0000);
                g.drawString("Complete!", getWidth() / 2 - 25,
                        getHeight() / 2 + 10, Graphics.LEFT | Graphics.TOP);
                System.out.println(playerScores);
                System.out.println("win " + Dragon.MISSIONCOUNTS);
            } else {
                g.setColor(0xff0000);
                g.drawString("You Lose!", getWidth() / 2 - 30,
                        getHeight() / 2 + 10, Graphics.LEFT | Graphics.TOP);
                System.out.println(playerScores);
                System.out.println("lose " + Dragon.MISSIONCOUNTS);
            }
        }
        flushGraphics();
    }
    
    public void missileVisibleCounts(Graphics g) {
        // ===========监测可见弹药数start=============
        int missileCount = 0;
        for (int i = 0; i < MISSILECOUNTS; i++) {
            if (missile[i].isVisible())
                missileCount++;
        }
        g.setColor(255, 255, 255);
        g.drawString(Integer.toString(missileCount), 0, 25, Graphics.LEFT
                | Graphics.TOP);
        // ===========监测可见弹药数end===============
    }
    
    public int randomXPosition() {
        return Math.abs(random.nextInt() % (getWidth() - 50) + 40);
        
    }
    
    public int randomYPosition() {
        return Math.abs(random.nextInt() % (getHeight() - 100));
    }
    
    public void addCharacter(GameSprites sprites) {
        sprites.setPosition(randomXPosition(), randomYPosition());
        sprites.setVisible(true);
        if (sprites == playerPlane) {
            sprites.setPosition((getWidth() - playerPlane.getWidth()) / 2,
                    getHeight() - 40);
        }
    }
    
    public void addMissile(GameSprites sprites) {
        for (int i = 0; i < MISSILECOUNTS; i++) {
            if (!missile[i].isVisible()) {
                if (sprites == boss) {
                    missile[i].setFrame(6);
                    missile[i].setPosition(sprites.getX() + 42,
                            sprites.getY() + 70);
                    missile[i].setVisible(true);
                    break;
                    
                } else if (sprites == playerPlane) {
                    missile[i].setFrame(14);
                    missile[i].setPosition(sprites.getX()
                    + (sprites.getWidth() / 2) - 7, sprites.getY() - 2);
                    missile[i].setVisible(true);
                    break;
                }
            }
            
        }
    }
    
    public void addExplosion(Sprite sprites) {
        for (int i = 0; i < EXPLOSIONCOUNTS; i++) {
            if (!explosion[i].isVisible()) {
                explosion[i].setFrame(0);
                explosion[i].setPosition(sprites.getX() + sprites.getWidth()
                / 2, sprites.getY() + sprites.getHeight() / 2);
                explosion[i].setVisible(true);
                break;
            }
        }
    }
    
    public void randomPlace(Sprite sprites) {
        sprites.setPosition(Math.abs(random.nextInt() % getWidth()), sprites
                .getY());
        
    }
    
}

⌨️ 快捷键说明

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