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

📄 desertcanvas.java

📁 一个基于JAVA的手机射击类游戏``有过关模式
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                        addMissile(eyeballMonster);
                    }
                    break;
                }
            }
        }
        //===============随机增加导弹end==============
        
        //===============急救箱start===============
        if (random.nextInt() % 180 == 0) {
            for (int i = 0; i < 20; i++) {
                if (!missile[i].isVisible()) {
                    missile[i].setFrame(9);
                    missile[i].setPosition(Math.abs(random.nextInt()
                    % (getWidth() - 50) + 25), Math.abs(random
                            .nextInt()
                            % (getHeight() - 100)) + 25);
                    missile[i].setVisible(true);
                    break;
                }
            }
        }
        // =============急救箱end==================
        
        // ===============红心start=================
        if (random.nextInt() % 350 == 0) {
            for (int i = 0; i < MISSILECOUNTS; i++) {
                if (!missile[i].isVisible()) {
                    missile[i].setFrame(13);
                    missile[i].setPosition(Math.abs(random.nextInt()
                    % (getWidth() - 50) + 25), Math.abs(random
                            .nextInt()
                            % (getHeight() - 100) + 25));// x(25~151),y(25~123)
                    missile[i].setVisible(true);
                    break;
                }
            }
        }
        // ===============红心end==================
        
        //============爆炸处理start===============
        for(int i =0; i <EXPLOSIONCOUNTS; i++){
            if(explosion[i].isVisible()){
                if(explosion[i].getFrame()<3){
                    explosion[i].nextFrame();
                } else{
                    explosion[i].setVisible(false);
                }
            }
        }
        //============爆炸处理end================
        
        //=============导弹处理start================
        for(int i =0; i< MISSILECOUNTS; i++){
            if(missile[i].isVisible()){
                //玩家发射导弹
                if(missile[i].getFrame() ==16){
                    missile[i].move(0,-5);
                    if(missile[i].collidesWith(bigMouthMonster,false)){
                        addExplosion(bigMouthMonster);
                        bigMouthMonsterHP = bigMouthMonsterHP - 2;
                        playerScores = playerScores + 10;
                        missile[i].setVisible(false);
                        
                    } else if(missile[i].collidesWith(toLeftMonster,false)){
                        addExplosion(toLeftMonster);
                        toLeftMonsterHP = toLeftMonsterHP - 2;
                        playerScores = playerScores + 10;
                        missile[i].setVisible(false);
                    } else if(missile[i].collidesWith(eyeballMonster,false)){
                        addExplosion(eyeballMonster);
                        playerScores = playerScores + 10;
                        missile[i].setVisible(false);
                        eyeballMonster.setVisible(false);
                    }
                    
                    for(int j = 0 ;j < AEROCRAFTCOUNTS; j++){
                        if(missile[i].collidesWith(aeroCraft[j],false)){
                            addExplosion(aeroCraft[j]);
                            playerScores = playerScores + 10;
                            missile[i].setVisible(false);
                            aeroCraft[j].setVisible(false);
                        }
                    }
                    
                }
                //眼球怪发射导弹
                else if(missile[i].getFrame() == 2){
                    missile[i].move(0,2);
                    if(missile[i].collidesWith(playerPlane,true)){
                        addExplosion(playerPlane);
                        playerHP = playerHP - 5;
                        missile[i].setVisible(false);
                        
                    }
                }
                //向做走开火
                else if(missile[i].getFrame() == 3){
                    missile[i].move(0,3);
                    if(missile[i].collidesWith(playerPlane,true)){
                        addExplosion(playerPlane);
                        playerHP = playerHP - 5;
                        missile[i].setVisible(false);
                    }
                }
                //大嘴怪开火
                else if(missile[i].getFrame() == 6){
                    missile[i].move(0,3);
                    if(missile[i].collidesWith(playerPlane,true)){
                        addExplosion(playerPlane);
                        playerHP = playerHP - 5;
                        missile[i].setVisible(false);
                    }
                }//red start
                else if(missile[i].getFrame() == 13){
                    missile[i].move(0,2);
                    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==================
        //=============飞行器的攻击处理start=======
        for(int i =0; i< AEROCRAFTCOUNTS; i++){
            if(aeroCraft[i].collidesWith(playerPlane,true)){
                addExplosion(playerPlane);
                playerHP = playerHP - 5;
                aeroCraft[i].setVisible(false);
                break;
            }
        }
        //=============飞行器的攻击处理endt=======
        
        updateInfo();
        
    }
    
    public void updateInfo(){
        if(playerHP<= 0){
            playerLifeCounts = playerLifeCounts -1;
            playerHP = 70;
        }
        if(playerLifeCounts == -1){
            playerHP = 0;
            playerLifeCounts = 0;
            desertThread = null;
            missionTwoGameOver = false;
            isWin = false;
            Dragon.MISSIONCOUNTS = Dragon.MENULIST;
            Dragon.showMenu = true;
        }
        if(isLose){
            stop();
            dragonMidlet.backToMenu();
        }
        if(bigMouthMonsterHP <= 0){
            bigMouthMonster.setVisible(false);
        } else if(toLeftMonsterHP <= 0){
            toLeftMonster.setVisible(false);
        }
        if(bigMouthMonsterHP <= 0 && toLeftMonsterHP <= 0){
            missionTwoGameOver = true;
            desertThread = null;
            isWin = true;
            Dragon.MISSIONCOUNTS = Dragon.MISSIONTHREE;
            //  Dragon.oceanCanvas = new OceanCanvas(Display.getDisplay(dragonMidlet));
        }
    }
    public void topInfoBar(Graphics g){
        g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
                Font.SIZE_SMALL));
        g.setColor(0x999999);//设定状态栏背景色是浅灰色
        g.fillRect(0,0,infoBarWidth,infoBarHeight);//设定状态栏大小
        g.drawImage(boss1IconImage,0,0,Graphics.LEFT|Graphics.TOP);//绘制Boss1头标
        g.setColor(0xff0000);
        g.drawRect(17,4,70,8);
        g.setColor(0xccff33);
        if(bigMouthMonsterHP < 30){
            g.setColor(0xff0000);
        }
        g.fillRect(17,4,bigMouthMonsterHP,8);//绘制boss1血槽
        
        g.drawImage(boss2IconImage,88,0,Graphics.LEFT|Graphics.TOP);//绘制boss2头标
        g.drawRect(105,4,70,8);
        g.setColor(0xccff33);
        if(toLeftMonsterHP < 30){
            g.setColor(0xff0000);
        }
        g.fillRect(105,4,toLeftMonsterHP,8);//绘制boss2血槽
        
    }
    
    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.drawImage(backgroundImage,0,20,Graphics.LEFT|Graphics.TOP);
        
        topInfoBar(g);//顶部信息栏
        missileVisibleCounts(g);
        desertCanvasLayer.paint(g,0,0);//游戏主画面
        bottomInfoBar(g);//底部信息栏
        
        if(stringShowCounts<= 38){//因为rate=40所以38表示1.5s,50表示2s
            g.setColor(0xff0000);
            g.drawString("Mission Two",getWidth()/2 -35,getHeight()/2 - 10,Graphics.LEFT|Graphics.TOP);
            g.drawString("Desert! Hold Up",getWidth()/2 -50,getHeight()/2 + 10,Graphics.LEFT|Graphics.TOP);
        }
        
        if(missionTwoGameOver){
            g.setColor(0xff0000);
            g.drawString("Mission Two",getWidth()/2 -35,getHeight()/2 - 10,Graphics.LEFT|Graphics.TOP);
            if(isWin){
                g.setColor(0xff0000);
                g.drawString("You Win!",getWidth()/2 -25,getHeight()/2 + 10,Graphics.LEFT|Graphics.TOP);
                g.drawString("Loading......",getWidth() / 2 - 28,
                        getHeight() / 2 + 22, 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();//flushGraphics()千万别忘。
    }
    
    
    public void missileVisibleCounts(Graphics g){
        //===========监测可见弹药数start=============
        int missileCount=0;
        for(int i=0; i<MISSILECOUNTS; i++){
            if(missile[i].isVisible())
                missileCount++;
        }
        g.setColor(0);
        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) + 30);
    }
    
    public void addCharacter(GameSprites sprites){
        sprites.setPosition(randomXPosition(),randomYPosition() +20);
        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 == bigMouthMonster){
                    if(bigMouthMonster.isVisible()){
                        missile[i].setFrame(6);
                        missile[i].setPosition(sprites.getX()+16,sprites.getY()+16);
                        missile[i].setVisible(true);
                    }
                    break;
                } else if(sprites == toLeftMonster){
                    if(toLeftMonster.isVisible()){
                        missile[i].setFrame(3);
                        missile[i].setPosition(sprites.getX()-10,sprites.getY()+15);
                        missile[i].setVisible(true);
                    }
                    break;
                } else if(sprites == eyeballMonster){
                    missile[i].setFrame(2);
                    missile[i].setPosition(sprites.getX()+35,sprites.getY()+10);
                    missile[i].setVisible(true);
                    break;
                } else if(sprites == playerPlane){
                    missile[i].setFrame(16);
                    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;
            }
        }
    }
}

⌨️ 快捷键说明

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