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

📄 gamecanvas.java

📁 一款Java管道连接游戏
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                        break;
                }
                break;
            case 6://退出游戏
                break;
        }
        if (keyPre=true && keyPreTime>1){
            keyPre=false;
        }else if(keyPre){
            keyPreTime++;
        }
        if (!gameStart){
            gameStart=true;
        }
    }
    /**
     * paint
     */
    Font font=null;
    int fontHeight=0;
    public void paint(Graphics g) {
        if (gameStart){
            switch(status){
                case 0:
                    g.setColor(255,255,255);
                    g.fillRect(0,0,getWidth(),getHeight());
                case 1://主菜单
                    switch(g_status){
                        case 1:
                            g.setColor(255,255,255);
                            g.fillRect(0,0,screenWidth,screenHeight);
                            if (mainMenuImg!=null){
                                g.drawImage(mainMenuImg,0,0,Tools.GRAPHCS_TOP_LEFT);
                            }
                            if (cursorImg!=null){
                                g.drawImage(cursorImg,cursorX1[m_status] ,cursorY[m_status], Tools.GRAPHCS_TOP_LEFT);
                                g.drawImage(cursorImg,cursorX2[m_status] ,cursorY[m_status], Tools.GRAPHCS_TOP_LEFT);
                            }
                            break;
                    }
                    break;
                case 2://游戏中
                    switch(g_status){
                        case 0:
                            loading(g);
                            break;
                        case 1:
                            gameRunDraw(g);
                            break;
                        case 2://菜单弹出时
                        case 3:
                        case 4:
                            gameRunDraw(g);
                            pupMenu1Draw(g);
                            break;
                        case 5:
                            switch(p_status){
                                case 1:
                                    if (gameOverImg!=null){
                                        g.drawImage(gameOverImg, 0,0, Tools.GRAPHCS_TOP_LEFT);
                                    }
                            }
                            break;
                        case 6:
                            switch(p_status){
                                case 1:
                                case 2:
                                case 3:
                                    gameRunDraw(g);
                                    pupMenu1Draw(g);
                                    pupMenu2Draw(g);
                                    break;
                            }
                            break;
                    }
                    break;
                case 3:
                    switch(g_status){
                        case 1://显示列表
                            g.setColor(176,221,255);
                            g.fillRect(0,0,screenWidth,screenHeight);
                            if (highScoreImg!=null){
                                g.drawImage(highScoreImg,0,0, Tools.GRAPHCS_TOP_LEFT);
                            }
                            g.setColor(255,255,255);
                            g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
                            if (playerListNum==0) {
                                //g.drawString("目前没有排行记录!",screenWidth/2,screenHeight/2,Graphics.TOP|Graphics.HCENTER);
                            } else{
                                for (int i=0;i<highScoreRms.plays.length;i++){
                                    g.drawString(highScoreRms.plays[i],27,33+i*16,Tools.GRAPHCS_TOP_LEFT);
                                    g.drawString(""+highScoreRms.points[i],72,33+i*16,Tools.GRAPHCS_TOP_LEFT);
                                }
                            }
                            break;
                    }
                    break;
                case 4:
                    switch(g_status){
                        case 1:
                            g.setColor(176,221,255);
                            g.fillRect(0,0,screenWidth,screenHeight);
                            if(saveBgImg!=null){
                                g.drawImage(saveBgImg, 0,0, Tools.GRAPHCS_TOP_LEFT);
                            }
                            g.setColor(250,0,0);
                            g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL));
                            if(DossierRms.dossierIdList==null){
                                g.drawString("目前没有存档记录!",screenWidth/2,screenHeight/2,Graphics.TOP|Graphics.HCENTER);
                            } else{
                                for (int i=0;i<DossierRms.dossierIdList.length;i++){
                                    g.drawImage(saveImg[i], screenWidth/2, 20+i*24, Graphics.TOP|Graphics.HCENTER);
                                }
                                g.drawImage(saveSelImg, screenWidth/2, 20+m_status*24, Graphics.TOP|Graphics.HCENTER);
                            }
                            break;
                        case 2:
                            loading(g);
                            break;
                    }
                    break;
                case 5:
                    switch(g_status){
                        case -1:
                            font = g.getFont();
                            fontHeight=font.getHeight();
                            g_status=0;
                            break;
                        case 1:
                            g.setColor(255,255,255);
                            g.fillRect(0,0, getWidth(),getHeight());
                            g.setColor(176,221,255);
                            g.fillRect(0,0,screenWidth,screenHeight);
                            g.setColor(0,0,0);
                            //把字符串转换为字符数据
                            char[] data = new char[howplayString.length()];
                            howplayString.getChars(0, howplayString.length(), data, 0);
                            int lineWidth = 0;
                            int charWidth = 0;
                            int y = 0;
                            int x = 0;
                            char ch;
                            for(int ccnt=0; ccnt < data.length; ccnt++) {
                                ch = data[ccnt];
                                //测量要绘制的字符
                                charWidth = font.charWidth(ch);
                                lineWidth = lineWidth + charWidth;
                                //看是否需要新的行
                                if (lineWidth > screenWidth) {
                                    y = y + fontHeight;
                                    lineWidth = 0;
                                    x = 0;
                                }
                                //绘制字符
                                if(p_status+y>=0 && p_status+y<screenHeight){
                                    g.drawChar(ch, x, p_status+y,Graphics.TOP|Graphics.LEFT);
                                }
                                x = lineWidth;
                            }
                            break;
                    }
                    break;
            }
        }
    }
    private void gameRunDraw(Graphics g){
        g.setColor(255,255,255);
        g.fillRect(0,0,screenWidth,screenHeight);
        if (bgImg!=null)  g.drawImage(bgImg, 0,0, 20);
        grids.draw(g);
        if (gridSelImg!=null) g.drawImage(gridSelImg, 6+curx*16, cury*16, Tools.GRAPHCS_TOP_LEFT);
        int j=0;
        for (int i=Tools.setNumerics(totalCursor);i>=0;i--){
            if(numberImg[Tools.Numerics[i]]!=null){
                g.drawImage(numberImg[Tools.Numerics[i]], 5+j*16,112, 20);
                j++;
            }
        }
        g.setColor(255,255,241);
        g.fillRect(123, 6, 2, 110-(grids.totalWaitTime-grids.passWaitTime)*1000/grids.totalWaitTime*110/1000);
    }
    private void pupMenu1Draw(Graphics g){
        if (pupMenuImg!=null){
            g.drawImage(pupMenuImg, i_status, 19, Tools.GRAPHCS_TOP_LEFT);
        }
        if(pupSelImg!=null){
            g.drawImage(pupSelImg, i_status,20+m_status*22, Tools.GRAPHCS_TOP_LEFT);
        }
    }
    private void pupMenu2Draw(Graphics g){
        if (pupMenu2Img!=null){
            g.drawImage(pupMenu2Img, j_status, 19, Tools.GRAPHCS_TOP_LEFT);
        }
        if(pupSelImg!=null){
            g.drawImage(pupSelImg, j_status,20+n_status*22, Tools.GRAPHCS_TOP_LEFT);
        }
    }
    private void readDossierRms(int dosId){
        DossierRms.readDossier(dosId);
    }
    /**
     * Called when a key is pressed.
     */
    private boolean keyPre=false;
    int key_Code;
    int key_GameCode;
    int keyPreTime=0;
    protected synchronized void keyPressed(int keyCode){
        key_GameCode = getGameAction(keyCode);
        key_Code=keyCode;
        keyPre=true;
        keyPreTime=0;
    }
    protected synchronized void keyReleased(int keyCode){
       // keyPre=false;
    }
    private void loadGame(){
        if (bgImg==null){
            try{
                bgImg=Image.createImage("/res/backGround.png");
            }catch(Exception e){}
        }
        if (gridSelImg==null){
            try{
                gridSelImg=Image.createImage("/res/gridSel.png");
            }catch(Exception e){}
        }
        numberImg=new Image[10];
        for(int i=0;i<10;i++){
            if (numberImg[i]==null){
                try{
                    numberImg[i]=Image.createImage(numberPng[i]);
                }catch(Exception e){
                    System.out.println("sfkjicxvx");
                }
            }
        }
    }
    private void loading(Graphics g){
        g.setColor(22,152,116);
        g.fillRect(0,0, screenWidth,screenHeight);
        g.setColor(217, 255,245);
        g.drawString("Loading...", screenWidth/2, screenHeight/2, Graphics.TOP|Graphics.HCENTER);
    }
    private void exit(){
        PlumberMidlet.mainMidlet.notifyDestroyed();
    }
}

⌨️ 快捷键说明

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