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

📄 maincanvas.java

📁 用JavaME开发的手机版CS和射击飞机的游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                            //在得50分内每隔10分,使系统反应时间加快1秒,增加难度
                            if ((m_Record.getCurRecord() <= 50) && (m_Record.getCurRecord() % 10 == 0)) {
                                time -= 2;
                            }
                            if ((m_Record.getCurRecord() <= 200) && (m_Record.getCurRecord() % 30 == 0)) {
                                time -= 3;
                            }
                            if ((m_Record.getCurRecord() > 200) && (m_Record.getCurRecord() % 50 == 0)) {
                                time -= 5;
                            }
                            m_GunAim.m_AimSp.setPosition(m_GunAim.m_GunSp.getX(), -10); //使子弹在最上面,不会再向上自动飞

                            break;
                        }
                    }

                }

                /********************************************************************************
                检验子弹是否和射中敌人飞机
                 *******************************************************************************/
                for (int n = 0; n < m_GunAim.m_playerSp.length; n++) {
                    if (m_GunAim.m_AimSp.collidesWith(m_GunAim.m_playerSp[n], true)) {//如果打中飞机,则增加生命

                        m_nLife += 3;


                        SoundPlayer.getInstance().playExplodeSound();
                        m_GunAim.bomb(m_GunAim.m_AimSp.getX(), m_GunAim.m_AimSp.getY());
                        if (n == 0)//从0(左边向右飞)开始的飞机则回到出发点,最左边
                        {
                            m_GunAim.m_playerSp[n].setPosition(0, m_GunAim.m_playerSp[n].getY());
                        } else //(右边向左飞)开始的飞机则回到出发点,最右边
                        {
                            m_GunAim.m_playerSp[n].setPosition(getWidth(), m_GunAim.m_playerSp[n].getY());
                        }
                        break;



                    }
                }
                /********************************************************************************
                检验子弹是否和敌人飞机炸弹碰撞,是则一起爆炸失效
                 *******************************************************************************/
                for (int n = 0; n < m_GunAim.m_bulletSp.length; n++) {
                    if (m_GunAim.m_AimSp.collidesWith(m_GunAim.m_bulletSp[n], true)) {
                        SoundPlayer.getInstance().playExplodeSound();
                        m_GunAim.bomb(m_GunAim.m_AimSp.getX(), m_GunAim.m_AimSp.getY());
                        m_GunAim.m_bulletSp[n].setPosition(300, 300);
                        m_GunAim.m_AimSp.setPosition(300, 300);
                        break;

                    }
                }
                /*****************************************************************************************
                检验枪是否被敌人飞机炸弹射中
                 *******************************************************************************************/
                for (int n = 0; n < m_GunAim.m_bulletSp.length; n++) {
                    if (m_GunAim.m_GunSp.collidesWith(m_GunAim.m_bulletSp[n], true)) {//如果敌人炸弹射中,则结束生命

                        m_nLife = 0;

                        SoundPlayer.getInstance().playExplodeSound();
                        m_GunAim.bomb(m_GunAim.m_GunSp.getX(), m_GunAim.m_GunSp.getY());
                        m_GunAim.m_bulletSp[n].setPosition(300, 300);
                        break;

                    }

                }


                break;
            case GAME_BUTTON:									//游戏中途显示按钮
                 {
                    switch (m_UI.Input(keyStates)) {
                        case MyButton.BUTTON_RESET:					//按下复位键
                            Reset();
                            setState(GAME_GAMING);
                            break;
                        case MyButton.BUTTON_EXIT:					//按下退出键
                            CSMidlet.midlet.notifyDestroyed();
                            break;
                    }
                }
                break;
            case GAME_END:
                if ((keyStates & GameCanvas.FIRE_PRESSED) != 0) {
                    Reset();
                    setState(GAME_GAMING);
                }
                break;
        }
    }

    public void Logic() {
        switch (m_nState) {
            case GAME_GAMING:
                m_GunAim.Logic();
                for (int n = 0; n < m_aEnemy.length; n++) {
                    m_aEnemy[n].Logic();
                    if (m_aEnemy[n].getState() == EnemySprite.ENEMY_FIRE) {//如果敌人开火,则减少生命值
                        m_nLife--;
                        if (m_nLife <= 0) //失去生命,游戏结束
                        {
                            setState(GAME_END);
                        }
                        break;

                    }
                }
                CreateEnemy();
                break;
            case GAME_END:
                //不断更改m_nPosY的值,实现文字滚屏
                m_nPosY++;
                //如果文字已滚至屏幕最下方,则重新设置文字的纵坐标
                if (m_nPosY > getHeight()) {
                    m_nPosY = 0;
                }
                break;
        }
    }

    public void Paint() {
        Graphics g = getGraphics();
        //用黑色清屏
        g.setColor(0);
        g.fillRect(0, 0, getWidth(), getHeight());

        g.setColor(0xFFFF0000);
        switch (m_nState) {
            case GAME_UI:								//显示界面
                m_UI.Paint(g, getWidth(), getHeight());
                //m_UI.append(new StringItem(null,"由达赖组织策划的部分僧人参加的'314打砸抢烧'事件,于是我们反对藏独的正义之站拉开了"));
                break;
            case GAME_GAMING:							//显示游戏画面
            case GAME_BUTTON:
                //显示敌人
                for (int n = 0; n < m_aEnemy.length; n++) {//按先后顺序,后面的能覆盖在前面图画
                    m_aEnemy[n].paint(g);

                }
                //显示背景
                m_Back.Paint(g, getWidth(), getHeight());
                //显示枪和准心
                m_GunAim.Paint(g);
                //显示生命值
                StringBuffer buff = new StringBuffer();
                buff.append("Life:");
                buff.append(m_nLife);
                g.drawString(buff.toString(), 5, 5, 0);
                StringBuffer buff2 = new StringBuffer();
                buff2.append("Score:");
                buff2.append(m_Record.getCurRecord());
                g.drawString(buff2.toString(), 190, 5, 0);
                m_UI.Paint(g, getWidth(), getHeight());
                break;
            case GAME_END:
                m_Back.Paint(g, getWidth(), getHeight());
                m_Record.Paint(g, getWidth(), getHeight());
                g.setFont(m_aFont);
                g.drawString("This game belongs to the kind of", 35, m_nPosY - 5, 0);
                g.drawString("shooting game.It is very interes-", 35, m_nPosY - 20, 0);
                g.drawString("ting and meaningful for us.", 35, m_nPosY - 35, 0);
                g.drawString("Because we spend lots of the ", 35, m_nPosY - 50, 0);
                g.drawString("time on it. It is the crystallization", 35, m_nPosY - 65, 0);
                g.drawString("of our teamwork.Thanks to it,", 35, m_nPosY - 80, 0);
                g.drawString("we meet each other and work to-", 35, m_nPosY - 95, 0);
                g.drawString("gether.Finally wish you have a ", 35, m_nPosY - 110, 0);
                g.drawString("enjoyable trip and good luck!", 35, m_nPosY - 125, 0);
                g.drawString("From :", 35, m_nPosY - 150, 0);
                g.drawString("            华南农业大学", 35, m_nPosY - 165, 0);
                break;

        }
        flushGraphics();
    }

    public void commandAction(Command c, Displayable s) {
        if (c == MenuCommand) {
            switch (m_nState) {
                case GAME_END:							//游戏结束,显示按钮
                case GAME_GAMING:						//正在游戏,显示按钮	
                    setState(GAME_BUTTON);
                    break;
                case GAME_BUTTON:						//正显示按钮,退回游戏
                    setState(GAME_GAMING);
                    break;
                default:
                    break;
            }
        }
       if(c == HelpCommand)
        {
           m_UI.setState(MyUI.UI_HIDE);
           m_About=new About(); 
          //  CSMidlet.midlet.notifyDestroyed();
         //  m_UI.setState(MyUI.UI_HIDE);
        }
    }
    //随机产生新敌人
    private void CreateEnemy() {
        int rs = Math.abs(m_Random.nextInt() % 20);
        if (rs >= 6) {
            return;
        }
        if (m_aEnemy[rs].getState() == EnemySprite.ENEMY_HIDE) {
            m_aEnemy[rs].setState(EnemySprite.ENEMY_NORMAL);
        }
    }
}

⌨️ 快捷键说明

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