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

📄 player_west.java~4~

📁 j2me 横版过关游戏工程。(demo).可以参考下
💻 JAVA~4~
📖 第 1 页 / 共 3 页
字号:
                        setCurrSequence(data.getPlayer()[20],
                                data.getPlayer()[21]);
                        mark = getFrameSequenceLength();
                        break;
                    case 1024:
                    case 1025:
                        prePlayerState = playerState;
                        speedX = 0;
                        setCurrSequence(data.getPlayer()[28],
                                data.getPlayer()[29]);
                        mark = getFrameSequenceLength();
                        break;
                    case 2048:
                    case 2049:
                        prePlayerState = playerState;
                        speedX = 0;
                        speedY = 6;
                        setCurrSequence(data.getPlayer()[16],
                                data.getPlayer()[17]);
                }
            }

            if ((64 & playerState) != (64 & prePlayerState)
                    || (isChangeDir && (64 & prePlayerState) != 0))
            {
                if ((64 & playerState) == 0)
                {
                    prePlayerState -= 64;
                    setFinalSequence(true);
                }
                if ((64 & playerState) != 0)
                {
                    if ((64 & prePlayerState) == 0)
                        prePlayerState += 64;
                    setCurrSequence(data.getPlayer()[22], data.getPlayer()[23]);
                    if (isChangeDir)
                    {
                        speedX = -speedX;
                    }
                }
            }

        }
    }

    /**
     * 设置动画序列
     *
     * @param imgIndex
     *            从第几张图片开始
     * @param totalNum
     *            连续设置多少张
     */
    private void setCurrSequence(int imgIndex, int totalNum)
    {

        int array[] = new int[totalNum];
        for (int i = 0; i < totalNum; i++)
        {
            if ((1 & prePlayerState) == 0)
                array[i] = data.getPlayerFrame()[imgIndex + i];
            else
            {
                array[i] = data.getPlayerFrame()[imgIndex + i] + 24;
            }
        }
        setFrameSequence(array);

    }

    /**
     * 处理是移动地图还是主角动
     *
     * @param startX
     *            左边缘
     * @param endX
     *            右边缘
     */
    private void moveMap(int startX, int endX)
    {
        x += speedX;
        WestGameCanvas.mapY -= speedY;
        ;
        xPlayerInMap = x - WestGameCanvas.mapX;
        yPlayerInMap = y - WestGameCanvas.mapY;
        if (xPlayerInMap >= data.getPlayer()[30] + startX
                && xPlayerInMap <= endX)
        {
            x = data.getPlayer()[30];
            WestGameCanvas.mapX = x - xPlayerInMap;
        }
    }

    /**
     *
     * @return
     */
    private void changeMapY()
    {
        int mapI = getMapIdI();
        int mapJ = getMapIdJ();
        int mapId = 0;
        if (mapI >= 0 && mapI <= data.getWorld().length && mapJ >= 0
                && mapJ <= data.getWorld()[0].length)
        {
            mapId = data.getWorld()[mapI][mapJ];
        }
        switch (WestGameCanvas.gameLevel)
        {
            case 1:
            case 4:
                if ((prePlayerState & 0x800) != 0 && mapId != 9)
                    mapId = 12;
                break;
            default://2 3
                if ((prePlayerState & 8) != 0 && mapId != 2)
                    return;
                break;
        }
        if (mapId == 0)
        {
            if (isDownWorld)
            {
                WestGameCanvas.mapY -= 20;
            }
            if ((prePlayerState & 198) != 0 && cloudIdx == -1)
            {
                playerState = 16 + (65 & prePlayerState);
                return;
            }
        }
        else
        {
            switch (WestGameCanvas.gameLevel)
            {
                case 1:
                case 4:
                    if((this.prePlayerState&8)>0)
                        return;
                    switch (mapId)
                    {
                        case 1://平地部分
                        case 2:
                        case 3:
                            WestGameCanvas.mapY = (short) (y
                                    + data.getPlayer()[32] - 20 - mapI
                                    * data.getWorldMessage()[3]);
                            break;
                        case 4:
                        case 5:
                        case 6:
                        case 7:
                        case 10:
                        case 11:
                            int littleNum = ((x + data.getPlayer()[31]
                                    - (WestGameCanvas.mapX) & 31)) >> 2;
                            int useId = 0;
                            for (int i = 0; i < data.getLittleMap().length; i++)
                            {
                                if (mapId == data.getLittleMap()[i][0])
                                {
                                    useId = data.getLittleMap()[i][littleNum + 2];
                                    if (useId == -1)
                                    {
                                        if (data.getLittleMap()[i][1] == 1)
                                        {
                                            WestGameCanvas.mapY += 32;
                                        }
                                        else
                                        {
                                            WestGameCanvas.mapY -= 32;
                                        }
                                        changeMapY();
                                        return;
                                    }
                                    break;
                                }
                            }
                            WestGameCanvas.mapY = (short) (y
                                    + data.getPlayer()[32] - (mapI << 5) - ((useId + 1) << 2));
                            break;
                        //		        case 8:
                        case 9:
                            if (cloudIdx == -1)
                            {
                                playerState = 16 + (1 & prePlayerState);
                                WestGameCanvas.mapX += (speedX << 1);
                                if (data.getWorld()[mapI][mapJ + 1] == 9)
                                    mapId = 12;
                            }
                            else
                            {
                                WestGameCanvas.mapX += speedX;
                            }
                            break;
                        case 8:
                            WestGameCanvas.mapY += 32;
                            changeMapY();
                            break;
                        case 12:
                            if ((prePlayerState & 220) != 0)
                            {


                                //无敌修改
                                //playerState = 32 + (1 & prePlayerState);
                                //WestGameCanvas.hp = 0;
                            }
                    }
                    if ((prePlayerState & 24) != 0 && mapId != 12)
                    {
                        playerState = 2 + (65 & prePlayerState);
                    }
                    break;
                case 2:
                case 3:
                    switch (mapId)
                    {
                        case 1://平地部分
                        case 7:
                        case 9:
                            WestGameCanvas.mapY = (short) (y
                                    + data.getPlayer()[32] - 20 - mapI
                                    * data.getWorldMessage()[3]);
                            break;
                        case 3:
                        case 4:
                        case 5:
                        case 6:
                            int inLock = (x + data.getPlayer()[31] - WestGameCanvas.mapX) & 31;
                            for (int i = 0; i < data.getLittleMap().length; i++)
                            {
                                if (mapId == data.getLittleMap()[i][0])
                                {
                                    int useId;
                                    if (inLock <= data.getLittleMap()[i][1])
                                        useId = data.getLittleMap()[i][2];
                                    else
                                        useId = data.getLittleMap()[i][3];
                                    if (useId != 0)
                                    {
                                        if (useId == 1)
                                            WestGameCanvas.mapY += 32;
                                        else if (useId == -1)
                                            WestGameCanvas.mapY -= 32;
                                        changeMapY();
                                        return;
                                    }
                                    int baseY = y + data.getPlayer()[32];
                                    int mapH = mapI * data.getWorldMessage()[3];
                                    switch (mapId)
                                    {
                                        case 3:
                                            WestGameCanvas.mapY = baseY - mapH
                                                    - (20 + inLock);
                                            break;
                                        case 4:
                                            WestGameCanvas.mapY = baseY - mapH
                                                    - (32 - (inLock - 20));
                                            break;
                                        case 5:
                                            WestGameCanvas.mapY = baseY - mapH
                                                    - (inLock - 12);
                                            break;
                                        case 6:
                                            WestGameCanvas.mapY = baseY - mapH
                                                    - (20 - inLock);
                                            break;
                                    }
                                    break;//for
                                }
                            }
                            break;//case 3456
                        case 8:
                            if ((prePlayerState & 220) != 0)
                            {

                                //无敌
                                // playerState = 32 + (1 & prePlayerState);
                                //WestGameCanvas.hp = 0;
                            }
                            break;//case 8
                        default:
                            if (isDownWorld)
                                return;
                            WestGameCanvas.mapX = mapDx;
                            WestGameCanvas.mapY = mapDy;
                            x = dx;
                            isDownWorld = true;
                            changeMapY();
                            return;
                    }
                    if ((prePlayerState & 0x18) != 0)
                        playerState = 2 | (65 & prePlayerState);
                    break;
            }
        }
    }

    /**
     * 在第几行
     *
     * @return
     */
    private int getMapIdI()
    {
        return (y + data.getPlayer()[32] - WestGameCanvas.mapY) / 32;
    }

    /**
     * 在第几列
     *
     * @return
     */
    private int getMapIdJ()
    {
        return (x + data.getPlayer()[31] - WestGameCanvas.mapX) / 32;
    }

}

⌨️ 快捷键说明

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