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

📄 showmap.java

📁 一款jbuilder开发的j2me射击游戏!
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            offScreen.setClip(btTmp.pos[0],btTmp.pos[1],
                              +bulletList[btTmp.size][2],+bulletList[btTmp.size][2]);
            offScreen.drawImage(this.fireImg[0],btTmp.pos[0] - bulletList[btTmp.size][0],
                                btTmp.pos[1] - bulletList[btTmp.size][1],20);
        }
        btTmp = null;
        //Draw person
        offScreen.setClip(perX,perY,PWIDTH,PHEIGHT);
        offScreen.drawImage(this.personImg,perX - getPersonClip()[0],perY - getPersonClip()[1],20);
        //Draw life
        try{
            lifePaint(perLife);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    private void infoPaint(){
        Font font = Font.getDefaultFont();
        String topScore = "TopScore:" + maxScore;
        offScreen.setClip(0,0,font.stringWidth(topScore),font.getHeight());
        offScreen.drawString(topScore,0,0,Graphics.LEFT|Graphics.TOP);
    }

    private void playKey(int keyCode){
        switch(getGameAction(keyCode)){
            case UP:
                personCurrent = 5;
                moveMap(UP);
                createBullet(true);
                playPaint();
                repaint2();
                break;
            case DOWN:
                personCurrent = 4;
                moveMap(DOWN);
                createBullet(true);
                playPaint();
                repaint2();
                break;
            case LEFT:
                personCurrent = 3;
                moveMap(LEFT);
                createBullet(true);
                playPaint();
                repaint2();
                break;
            case RIGHT:
                personCurrent = 2;
                moveMap(RIGHT);
                createBullet(true);
                playPaint();
                repaint2();
                break;
            case FIRE:
                personCurrent = 0;
                createBullet(true);
                playPaint();
                repaint2();
            default:
                personCurrent = 0;
                //System.out.println("keyCode:"+keyCode);
                break;
        }
    }

    public void keyPressed(int keyCode){
        if(!keyEnable) return;
        int gameaction = this.getGameAction(keyCode);
        try{
            switch(screenTurn){
                case 0: //splash
                    screenTurn = 1;
                    menuitem = 1;
                    menuPaint();
                    menubarPaint();
                    repaint2();
                    effect.stopSound();
                    break;
                case 1: //menu
                    switch(gameaction){
                        case UP:
                            if(menuitem > 1){
                                menuitem--;
                            }
                            menuPaint();
                            menubarPaint();
                            repaint2();
                            //System.out.println("menu up, menuitem:"+menuitem);
                            break;
                        case DOWN:
                            if(menuitem < 3){
                                menuitem++;
                            }
                            menuPaint();
                            menubarPaint();
                            repaint2();
                            //System.out.println("menu down, menuitem:"+menuitem);
                            break;
                        case FIRE:
                            switch(menuitem){
                                case 1:
                                    screenTurn = 2;
                                    playPaint();
                                    stagePaint(stageLevel);
                                    repaint2();
                                    break;
                                case 2:
                                    screenTurn = 2;
                                    resetGame();
                                    playPaint();
                                    stagePaint(stageLevel);
                                    repaint2();
                                    break;
                                case 3:
                                    quit();
                                    break;
                                default:
                                    break;
                            }
                            break;
                        default:
                            break;
                    }
                    break;
                case 2: //stage
                    screenTurn = 3;
                    playPaint();
                    repaint2();
                    appRun = true;
                    thread = new Thread(this);
                    thread.start();
                    break;
                case 3: //play
                    playKey(keyCode);
                    break;
                case 4: //end stage
                    cleanScreen();
                    endPaint(perLife == 0);
                    repaint2();
                    break;
                default:
                    break;
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public void keyRepeated(int keyCode){
        keyPressed(keyCode);
    }

    public void keyReleased(int keyCode){
        personCurrent = 0;
    }

    public int[] getPersonPosition() {
        int[] rtia = {
            perX + PWIDTH / 2, perY + PHEIGHT / 2};
        return rtia;
    }

    public int[] getOgrePosition() {
        int[] rtia = { ogreX + ogreImg[oCurrent][yCurrent].getWidth() / 2,
            ogreY[yCurrent] + ogreImg[oCurrent][yCurrent].getHeight() / 2};
        return rtia;
    }

    public void run(){
        while(appRun){
            try{
                Thread.sleep(300L);
            }catch(Exception e){
                e.printStackTrace();
            }
            if(change == 1){
                if (current >= 2) {
                    current = 0;
                }
                else {
                    current++;
                }
                change = 0;
            }else{
                change++;
            }

            //set person current imge clip
            personCurrent = (personCurrent == 0) ? 1 :((personCurrent == 1) ? 0 : personCurrent) ;

            if(ogreAlive){

                if(oCurrent == 1){
                    if(showInterval == 1){
                        ogreAlive = false;
                        showInterval = 0;
                    }else{
                        //if(yCurrent > 0) yCurrent--;
                        showInterval++ ;
                    }
                }else{
                    if(ogreDirect){
                        ogreX += ogreMoveBlock;
                        if(ogreX > ogreMaxX) ogreDirect = false;
                    }else{
                        ogreX -= ogreMoveBlock;
                        if(ogreX < ogreMinX) ogreDirect = true;
                    }
                    switch(yCurrent){
                        case 0:
                            yCurrent = (generalInt(4) > 25) ? 0 : 1;
                            break;
                        case 1:
                            int tmp = generalInt(4);
                            yCurrent = (tmp > 25)? 1 : ((tmp < 13) ? 0 : 2);
                            break;
                        case 2:
                            yCurrent = (generalInt(4) > 25) ? 2 : 1;
                            break;
                        default:
                            break;
                    }
                     createBullet(false);
                }
                playPaint();
                repaint2();
            }else{
                if(showInterval == 3){
                    ogreX = generalInt(4);
                    if (ogreX > ogreMaxX) {
                        ogreX -= ogreMaxX;
                    }
                    else if (ogreX < ogreMinX) {
                        ogreX += ogreMinX;
                    }
                    int compare = generalInt(4);
                    ogreDirect = generalInt(4) > 50;
                    oCurrent = 0;
                    yCurrent = 0;
                    ogreAlive = true;
                    repaint2();
                    showInterval = 0;
                }else{
                    showInterval++;
                }
            }
            //System.out.println("Score:"+score);
            System.gc();
            playPaint();
            repaint2();
        }
        screenTurn = 4;
    }

    public void commandAction(Command comm,Displayable display){
        if(comm.getCommandType() == Command.EXIT){
            System.out.println("Exit");
            quit();
        }
    }

    public void quit(){
        saveData(false);
        this.appRun = false;
        for (Enumeration en = bulletVector.elements(); en.hasMoreElements(); ) {
            btTmp = (BulletTrace) en.nextElement();
            btTmp.cancel();
            bulletVector.removeElement(btTmp);
        }
        btTmp = null;
        OgreBullet ob;
        for(Enumeration en = ogreBulletVector.elements(); en.hasMoreElements(); ){
            ob = (OgreBullet)en.nextElement();
            ob.cancel();
            ogreBulletVector.removeElement(ob);
        }
        ob = null;
        System.gc();
        app.exitMIDlet();
    }

    private void createBullet(boolean type){
        if(type){
            if (System.currentTimeMillis() - this.curTime > this.timeInterval) {
                if (bulletVector.size() < bulletMax) {
                    BulletTrace bt = new BulletTrace(this);
                    bulletVector.addElement(bt);
                    timer.schedule(bt, moveTime, moveTime);
                }
                curTime = System.currentTimeMillis();
            }
        }else{
            if (System.currentTimeMillis() - ogreCurTime > this.timeInterval * 10) {
                if (ogreBulletVector.size() < bulletMax) {
                    OgreBullet bt = new OgreBullet(this);
                    ogreBulletVector.addElement(bt);
                    timer.schedule(bt, moveTime * 2, moveTime * 2);
                }
                ogreCurTime = System.currentTimeMillis();
            }
        }
    }

    private int generalInt(int bits){
        if(bits > 0 && bits < 30){
            return Integer.parseInt((""+random.nextInt()).substring(2,bits));
        }else{
            return Integer.parseInt((""+random.nextInt()).substring(2,4));
        }
    }

    public int hitTest(int x,int y,int w,int h,int tx,int ty,int tw,int th){
        int rti = 0;
        if(x >= tx && (x + w) <= (tx + tw) && y >= ty && (y + h) <= (ty + th)){
            rti = 1;
        }
        //System.out.println("hitTest x:"+x+" y:"+y+" w:"+w+" h:"+h+" tx:"+tx+" ty:"+ty+" tw:"+tw+" th:"+th+" hit:"+rti);
        return rti;
    }

    public int[] getPersonClip(){
        int m,n;
        m = personCurrent % 4;
        n = personCurrent / 4;
        int[] rtia = {m * PWIDTH,n * PHEIGHT};
        return rtia;
    }
}

⌨️ 快捷键说明

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