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

📄 westgamecanvas.java~52~

📁 j2me 横版过关游戏工程。(demo).可以参考下
💻 JAVA~52~
📖 第 1 页 / 共 5 页
字号:
                mapX = data.getWorldMessage()[0];
                mapY = data.getWorldMessage()[1];
                gameState = 0;//0,正常游戏状态 1,切换命的状态 2gameover

                markNum = 0x2000000;
                mark = 0;

                //------------------------------------------------------------->
            }
            else if (mark == 0)
            {
                mark++;
            }
             System.out.println("BBBBBBBBBBBBBB");
        }
        else if (markNum == 0x8000000)
        {
            int sum = 0;
            for (int i = 0; i < 10; i++)
                sum += this.rsNameScore[5][i];
            this.nameOk = sum > 0 ? true : false;
            if (this.menuSubTxtDy != 0)
                this.menuChangeName(0, this.menuSubTxtDy);
        System.out.println("CCCCCCCCCCC");
       }
    }

    private void menuPaint(Graphics g)
    {
        if (( 0xff000000 & markNum ) == 0x4000000)
        {
            switch (mark)
            {

            case 0:
                g.drawImage(imgMenuLoad[9], 31, 77, 0);
                break;
            case 1:
                g.drawImage(imgMenuLoad[0], 0, 0, 0);
                g.drawImage(imgMenuLoad[1], 30, xyCartoon[0], 0);
                g.drawImage(imgMenuLoad[2], 30, xyCartoon[1], 0);
                g.drawImage(imgMenu[27], xyCartoon[2], 100, 0);
                g.drawImage(imgMenu[28], xyCartoon[3], 140, 0);
                break;
            case 2:
//                g.drawImage(imgMenuLoad[5], 85, 135, 0);
                break;
            default:
                g.drawImage(imgMenuLoad[0], 0, 0, 0);
                g.drawImage(imgMenuLoad[6], 35, 69, 0);//画START
                if (mark == 5)
                {
                    g.drawImage(imgMenuLoad[7], 60, 80, 0);
                    g.setColor(0Xffffff);
                    g.drawString("press 5 to start.", 60, 120, 0);
                }
                else
                    g.drawImage(imgMenuLoad[8], 70, 70, 0);
                break;
            }
        }
        //菜单部分
        if (( markNum & 0xff000000 ) == 0)
        {
            //主菜单绘制
            if (( markNum & 0xf0000 ) == 0)
            {
                int startY = 55;
                int startX, imgIdx;
                g.drawImage(imgMenu[0], 0, 0, 0);
                g.drawImage(imgMenu[27], 5, 15, 0);
                g.drawImage(imgMenu[28], 95, 15, 0);
                g.drawImage(imgMenu[29], 110, 25, 0);
                for (int i = 1; i < 8; i++)
                {
                    if (i == 1 && ( markNum & 0x800000 ) > 0)//back选项
                        imgIdx = ( markNum == 0x800000 ) ? 16 : 8;
                    else
                        //其它选项
                        imgIdx = i
                                + ( ( ( 0xff & ( markNum >> 8 ) ) == i - 1 ) ? 8
                                        : 0 );
                    startX = ( ( screenWidth - imgMenu[imgIdx].getWidth() ) >> 1 ) - 22;
                    g.drawImage(imgMenu[imgIdx], startX, startY, 0);
                    startY += 18;
                }
            }
            else
            {
                g.drawImage(imgMenu[17], 0, 0, 0);
                //自菜单绘制
                int idUse = ( ( markNum & 0xf0000 ) >> 16 ) + 9;
                g.drawImage(imgMenu[idUse], ( screenWidth - imgMenu[idUse]
                        .getWidth() ) / 2 - 10, 25, 0);
                switch (markNum & 0xf0000)
                {
                    case 0x20000://选项
                        g.drawImage(imgMenu[19], 70, 80, 0);
                        g.drawImage(imgMenu[21 - ( ( markNum & 0x100 ) == 0 ? 1
                                : 0 )], 90, 120, 0);
                        g.drawImage(imgMenu[23 - ( ( markNum & 0x100 ) == 0 ? 0
                                : 1 )], 90, 140, 0);
                        break;
                    case 0x40000://高分榜
                        this.menuDrawSubText(g, this.txtScoreInfo, 18, 158, 90);
                        break;
                    case 0x30000://关于
                    case 0x50000://帮助
                        this.menuDrawChinaStr(g);
                        break;
                }
            }
        }
        //loading部分
        if (markNum == 0x1000000)
        {

            g.setColor(0);
            g.fillRect(0, 0, 176, 208);
            g.drawImage(imgMenu[24], 100, 190, 0);
            g.setColor(0xffff);
            g.drawString("AAAAAAAAa",0,0,20);
        }
        else if (markNum == 0x8000000)
        {
            g.drawImage(imgMenu[17], 0, 0, 0);
            this.menuDrawSubText(g, this.txtNameInfo, 53, 123, 80);
            g.setClip(0, 0, screenWidth, screenHeight);
            //下划线的起始位置
            int ix = 54;
            for (int i = 0; i < 10; i++)
                ix += MENU_SUB_TEXT_W;
        }
        if (!( ( 0xff000000 & markNum ) == 0x4000000 && mark == 0 )
                && markNum != 0x1000000)
            g.drawImage(imgMenu[25], 20, 190, 0);
    }

    void menuKeyPress(int keyCode)
    {
        if (( 0xff000000 & markNum ) == 0x4000000 && mark == 5
                && keyCode == KEY_NUM5)
        {
            mark = 6;
        }
        //菜单部分
        if (( 0xff000000 & markNum ) == 0)
        {
            switch (keyCode)
            {
                case KEY_NUM2:
                case KEYCODE_DIRECT_UP:
                    if (( ( 0xff0000 & markNum ) == 0 //是主菜单状态
                            || ( 0x820000 & markNum ) > 0 )//是主菜单可以返回游戏 或者
                            // 是选项菜单
                            && ( 0xff00 & markNum ) > 0)//未到达最顶端
                        markNum -= 0x100;
                    break;
                case KEY_NUM8:
                case KEYCODE_DIRECT_DOWN:
                    if (( ( ( 0xff0000 & markNum ) == 0 || ( 0x800000 & markNum ) > 0 ) && ( 0xff00 & markNum ) < 0x600 )//未到达主菜单下端
                            || ( ( 0x20000 & markNum ) > 0 && ( 0xff00 & markNum ) < 0x100 ))//未到达选项菜单下端
                        markNum += 0x100;
                    break;
                case KEY_NUM5:
                case KEYCODE_DIRECT_FIRE:
                    switch (markNum)
                    {
                        case 0x600://退出游戏
                            this.running = false;
                            break;
                        case 0x800600://从可以返回游戏的菜单,退出到新游戏的菜单
                            markNum &= 0;
                            this.saveLevel = gameLevel;
                            break;
                        case 0x800000://返回游戏
                            markNum = 0x2000000;//继续游戏
                            this.soundStop();
                            break;
                        default://其它状态
                            if (markNum == 0 || ( 0xfff00 & markNum ) == 0x100)
                            {
                                isContinue=(markNum == 0)?false:true;
                                markNum = 0x08000000;//输入名字状态
                                this.menuChangeName(0, 0);
                            }
                            else if (( 0xf0000 & markNum ) == 0)
                            {//当前是主菜单
                                int markuse = markNum & 0xf00;
                                markuse <<= 8;
                                markNum &= 0xfff0f0ff;
                                markNum |= markuse;
                                //子菜单内容处理
                                switch (markNum&0xf0000)
                                {
                                    case 0x40000://高分榜
                                        this.menuScoreTextHandle();
                                        break;
                                    case 0x30000://关于
                                        this.menuSplitStringForVector(this.menuSubStr[1]);
                                        break;
                                    case 0x50000://帮助
                                        this.menuSplitStringForVector(this.menuSubStr[0]);
                                        break;
                                }
                            }
                            else if (( 0x20000 & markNum ) > 0)
                            {//当前是选项菜单
                                this.soundOn = ( 0x100 & markNum ) == 0 ? true
                                        : false;
                            }
                            break;
                    }
                    break;
                case KEYCODE_RIGHT_SOFTKEY:
                case KEYCODE_LEFT_SOFTKEY:
                    if (( 0xf0000 & markNum ) != 0)
                    {
                        int markUse = markNum & 0xf0000;
                        markUse = markUse >> 8;
                        markNum = markNum & 0xfff0f0ff;
                        markNum = markNum | markUse;
                    }
                    break;
            }
        }
        else if (markNum == 0x8000000)
        {
            switch (keyCode)
            {
                case KEY_NUM2:
                case KEYCODE_DIRECT_UP:
                    this.menuSubTxtDy = -1;
                    break;
                case KEY_NUM8:
                case KEYCODE_DIRECT_DOWN:
                    this.menuSubTxtDy = 1;
                    break;
                case KEY_NUM4:
                case KEYCODE_DIRECT_LEFT:
                    this.menuChangeName(-1, 0);
                    break;
                case KEY_NUM6:
                case KEYCODE_DIRECT_RIGHT:
                    this.menuChangeName(1, 0);
                    break;
                case KEY_NUM5:
                case KEYCODE_DIRECT_FIRE:
                    if (nameOk)
                    {//开始新游戏
                        hp = 100;//主角的生命值,等于0时为死亡状态
                        score = 0;
                        gameLevel = this.isContinue? this.saveLevel
                                : 1;
                        life = 3;
                        this.soundStop();
                        markNum = 0x1000000;//loading
                        this.mark &= 0;
                    }
                    break;
                case KEYCODE_RIGHT_SOFTKEY:
                case KEYCODE_LEFT_SOFTKEY:
                    markNum &= 0;
                    break;
            }
        }
    }
private boolean isContinue=false;

    private void mapMove()
    {
        int k = 0;
        if (mapY > 0)
        {
            startI = 0;
        }
        else
        {
            startI = ( -mapY ) >> 5;
        }
        endI = ( -mapY + screenHeight >> 5 ) + 1;
        if (endI < 0)
        {
            endI = 0;
        }
        else if (endI > data.getWorld().length - 1)
        {
            endI = data.getWorld().length - 1;
        }
        if (endI > startI)
        {
            startJ = ( -mapX ) >> 5;
            if (startJ < 0)
                startJ = 0;
            endJ = ( -mapX + screenHeight >> 5 ) + 1;
            if (endJ >= data.getWorld()[0].length)
            {
                endJ = data.getWorld()[0].length - 1;
            }
            xStartUse = xStart = ( startJ << 5 ) + mapX;
            yStart = ( startI << 5 ) + mapY;
            for (int j = startI; j <= endI; j++)
            {
                for (int i = startJ; i < endJ && k < blockDraw[0].length - 1; i++)
                {
                    if (data.getWorld()[j][i] != 0)
                    {
                        blockDraw[0][k] = data.getWorld()[j][i];
                        blockDraw[1][k] = xStartUse;
                        blockDraw[2][k] = yStart;
                        k++;
                    }
                    xStartUse += 32;
                }
                yStart += 32;
                xStartUse = xStart;
            }
        }
        blockDraw[0][k] = 0;
        //--------------------------------------------------------<1
        xMid = mapX * 2 / 5 % screenWidth;
        xClose = mapX % screenWidth;
        mapId = ( mapY - drawStart ) / screenHeight;
        yFar = ( mapY - drawStart ) % screenHeight;
        yMid = yFar + data.getBackMessagess()[0];
        //----------------------------------------------------------1>
    }

    private void mapDraw(Graphics g)
    {
        //---------------------------------------------------------<1
        drawId(g, 0, 0, yFar);
        if (yFar != 0)
        {
            mapId++;
            drawId(g, 0, 0, yFar - screenHeight);
            mapId--;
        }
        drawLayer(g, 1, xMid, yMid);
        drawLayer(g, 2, xClose, yMid + data.getBackMessagess()[1]);
        //----------------------------------------------------------1>
        for (int i = 0; i < blockDraw[0].length && blockDraw[0][i] != 0; i++)
        {
            g.drawImage(GameDataSimple.imgMap[blockDraw[0][i]],
                    blockDraw[1][i], blockDraw[2][i], 0);
            //TODO网格
//            g.setColor(0);
//            g.drawLine(blockDraw[1][i], blockDraw[2][i], blockDraw[1][i],
//                    blockDraw[2][i] + 32);
//            g.drawLine(blockDraw[1][i], blockDraw[2][i], blockDraw[1][i] + 32,
//                    blockDraw[2][i]);
            //---------------->
        }
    }

    /**
     * 绘制一层背景-------------------------1
     *
     * @param g
     * @param id
     *            0:远景 1:中景 2:近景
     * @param xDraw
     *            层的x坐标
     * @param yDraw
     *            层的y坐标

⌨️ 快捷键说明

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