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

📄 manager.java

📁 一款一个益智类的手机游戏源码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:

            case 2: // '\002'
                for (int k = 0; k < 6; k++)
                {
                    bgArray[1][9 + k] = 4;
                }

                break;

            case 4: // '\004'
                for (int l = 0; l < 6; l++)
                {
                    bgArray[GROUND_START_ROW + 9 + l][1] = 4;
                }

                break;

            case 6: // '\006'
                for (int i1 = 0; i1 < 6; i1++)
                {
                    bgArray[ROWS - 2][9 + i1] = 4;
                }

                break;
        }
    }

    private void initLocation(boolean flag)
    {
        girlTarget[3] = 3;
        if (flag)
        {
            setInitPlayerXY(directOfInRoad);
            players[0][2] = directOfOutRoad;
            players[1][2] = directOfOutRoad;
            previousXY[0] = players[0][0];
            previousXY[1] = players[0][1];
            setGirlTarget(players[0][0], players[0][1],
                          heroLoc[players[0][2]][players[0][3]][2],
                          heroLoc[players[0][2]][players[0][3]][3],
                          (byte) players[0][2]);
            for (int i = nativeNum - 1; i >= 0; i--)
            {
                natives[i][2] = 0;
                natives[i][3] = 0;
            }

        }
        else
        {
            players[0][0] = previousXY[0];
            players[0][1] = previousXY[1];
            players[1][2] = players[0][2];
            setGirlTarget(players[0][0], players[0][1],
                          heroLoc[players[0][2]][players[0][3]][2],
                          heroLoc[players[0][2]][players[0][3]][3],
                          (byte) players[0][2]);
            moveGirl();
            for (int j = nativeNum - 1; j >= 0; j--)
            {
                if (natives[j][3] == 1 || natives[j][3] == 6)
                {
                    natives[j][3] = 0;
                }
            }

        }
        setHeroState( (byte) 0);
        setGirlState( (byte) 0);
        setNativeTarget(players[0][0], players[0][1], 0);
    }

    private void setInitPlayerXY(int i)
    {
        switch (i)
        {
            case 0: // '\0'
                players[1][1] = (GROUND_START_ROW + 11) * 5;
                players[1][0] = (COLUMNS - 1) * 5;
                players[0][1] = players[1][1];
                players[0][0] = players[1][0] - 17;
                break;

            case 2: // '\002'
                players[1][1] = 5;
                players[1][0] = 55;
                players[0][1] = players[1][1] + 17;
                players[0][0] = players[1][0];
                break;

            case 4: // '\004'
                players[1][1] = (GROUND_START_ROW + 11) * 5;
                players[1][0] = 5;
                players[0][1] = players[1][1];
                players[0][0] = players[1][0] + 17;
                break;

            case 6: // '\006'
                players[1][1] = (ROWS - 1) * 5;
                players[1][0] = 55;
                players[0][1] = players[1][1] - 18;
                players[0][0] = players[1][0];
                break;
        }
    }

    private byte getDirectOfOutRoad()
    {
        int i = players[0][1] / 5;
        int j = players[0][0] / 5;
        if (bgArray[i][j + 1] == 4 || bgArray[i][j - 1] == 4)
        {
            return ( (byte) (i >= ROWS / 2 ? 6 : 2));
        }
        if (bgArray[i + 1][j] == 4 || bgArray[i - 1][j] == 4)
        {
            return ( (byte) (j >= COLUMNS / 2 ? 0 : 4));
        }
        else
        {
            return 0;
        }
    }

    private int getOppositeDirect(int i)
    {
        return i + 4 <= 7 ? i + 4 : i - 4;
    }

    private byte getDirectTowardPoint(int i, int j, int k, int l)
    {
        if (k == i)
        {
            byte byte0;
            if (l < j)
            {
                byte0 = 6;
            }
            else
            {
                byte0 = 2;
            }
            return byte0;
        }
        int i1 = ( (l - j) * 100) / (k - i);
        byte byte1;
        if ( -41 < i1 && i1 <= 41)
        {
            if (i < k)
            {
                byte1 = 4;
            }
            else
            {
                byte1 = 0;
            }
        }
        else
        if (41 < i1 && i1 <= 241)
        {
            if (j < l)
            {
                byte1 = 3;
            }
            else
            {
                byte1 = 7;
            }
        }
        else
        if (i1 <= -241 || 241 < i1)
        {
            if (j < l)
            {
                byte1 = 2;
            }
            else
            {
                byte1 = 6;
            }
        }
        else
        if ( -241 < i1 && i1 <= -41)
        {
            if (j < l)
            {
                byte1 = 1;
            }
            else
            {
                byte1 = 5;
            }
        }
        else
        {
            byte1 = 4;
        }
        return byte1;
    }

    private int getFastDistance(int i, int j, int k, int l)
    {
        int i1 = 0;
        i = Math.abs(i - k);
        j = Math.abs(j - l);
        i1 = Math.min(i, j);
        return ( (i + j) - (i1 >> 1) - (i1 >> 2)) + (i1 >> 4);
    }

    private void move(int ai[][], int i, byte byte0, int j)
    {
        int k = ai[i][0];
        int l = ai[i][1];
        switch (byte0)
        {
            case 0: // '\0'
                k += j;
                break;

            case 1: // '\001'
                k += j;
                l -= j;
                break;

            case 2: // '\002'
                l -= j;
                break;

            case 3: // '\003'
                k -= j;
                l -= j;
                break;

            case 4: // '\004'
                k -= j;
                break;

            case 5: // '\005'
                k -= j;
                l += j;
                break;

            case 6: // '\006'
                l += j;
                break;

            case 7: // '\007'
                k += j;
                l += j;
                break;
        }
        if (bgArray[l / 5][k / 5] == 1 || bgArray[l / 5][k / 5] == 4)
        {
            ai[i][0] = k;
            ai[i][1] = l;
        }
    }

    public void moveHero(byte byte0)
    {
        if (situation != 0)
        {
            return;
        }
        previousXY[0] = players[0][0];
        previousXY[1] = players[0][1];
        if (byte0 == 0)
        {
            move(players, 0, (byte) players[0][2], 3);
        }
        else
        {
            move(players, 0, (byte) getOppositeDirect(players[0][2]), 3);
        }
        setHeroState( (byte) 1);
        setGirlTarget(players[0][0], players[0][1],
                      heroLoc[players[0][2]][players[0][3]][2],
                      heroLoc[players[0][2]][players[0][3]][3],
                      (byte) players[0][2]);
        setNativeTarget(players[0][0], players[0][1], 0);
        checkItem();
    }

    private void checkItem()
    {
        if (item == null)
        {
            return;
        }
        for (int i = item.length - 1; i >= 0; i--)
        {
            if (item[i][2] == 0)
            {
                int j = getFastDistance(players[0][0], players[0][1],
                                        item[i][1] * 5, item[i][0] * 5);
                if (j < 10)
                {
                    item[i][2] = 1;
                    cartridge++;
                    playSound("/item.ott", 6, 1);
                }
            }
        }

    }

    public void translateHero(byte byte0)
    {
        if (situation != 0)
        {
            return;
        }
        if (byte0 == 2)
        {
            players[0][2] = players[0][2] != 0 ? players[0][2] - 1 : 7;
        }
        else
        {
            players[0][2] = players[0][2] != 7 ? players[0][2] + 1 : 0;
        }
        setGirlTarget(players[0][0], players[0][1],
                      heroLoc[players[0][2]][players[0][3]][2],
                      heroLoc[players[0][2]][players[0][3]][3],
                      (byte) players[0][2]);
    }

    public void setHeroDirect(byte byte0)
    {
        if (situation != 0)
        {
            return;
        }
        if (players[0][2] != byte0)
        {
            players[0][2] = byte0;
            setGirlTarget(players[0][0], players[0][1],
                          heroLoc[players[0][2]][players[0][3]][2],
                          heroLoc[players[0][2]][players[0][3]][3],
                          (byte) players[0][2]);
        }
        else
        {
            moveHero( (byte) 0);
        }
    }

    private void setHeroState(byte byte0)
    {
        players[0][3] = byte0;
    }

    private void setGirlState(byte byte0)
    {
        players[1][3] = byte0;
    }

    public void shootHero()
    {
        if (situation != 0)
        {
            return;
        }
        setHeroState( (byte) 3);
        if (bullet > 0)
        {
            bullet--;
        }
        else
        {
            bullet = -1;
            return;
        }
        checkCollisionWithBullet();
    }

    private void setNativeTarget(int i, int j, int k)
    {
        nativeTarget[0] = i;
        nativeTarget[1] = j;
        nativeTarget[2] = k;
    }

    public void moveNative()
    {
        for (int i = nativeNum - 1; i >= 0; i--)
        {
            if (natives[i][3] == 1)
            {
                natives[i][2] = getDirectTowardPoint(nativeTarget[0],
                    nativeTarget[1], natives[i][0], natives[i][1]);
                move(natives, i, (byte) natives[i][2], nativeMoveSize);
            }
        }

    }

    private void setGirlTarget(int i, int j, int k, int l, byte byte0)
    {
        int i1 = 0;
        int j1 = 0;
        byte byte1 = girlLoc[byte0][players[1][3]][2];
        byte byte2 = girlLoc[byte0][players[1][3]][3];
        switch (byte0)
        {
            case 0: // '\0'
                i1 = i - byte1 - 3;
                j1 = j;
                break;

            case 1: // '\001'
                i1 = (i - byte1) + 2;
                j1 = (j + l) - 3;
                break;

            case 2: // '\002'
                i1 = i;
                j1 = j + l + 1;
                break;

            case 3: // '\003'
                i1 = (i + k) - 6;
                j1 = (j + l) - 3;
                break;

            case 4: // '\004'
                i1 = i + k;
                j1 = j;
                break;

            case 5: // '\005'
                i1 = (i + k) - 4;
                j1 = (j - byte2) + 3;

⌨️ 快捷键说明

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