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

📄 manager.java

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

            case 6: // '\006'
                i1 = i;
                j1 = j - byte2 - 1;
                break;

            case 7: // '\007'
                i1 = (i - k) + 4;
                j1 = (j - byte2) + 4;
                break;
        }
        if (i1 <= 0)
        {
            i1 = i + k;
        }
        if (WIDTH - 5 <= i1)
        {
            i1 = i - girlLoc[byte0][players[1][3]][2];
        }
        if (j1 <= 0)
        {
            j1 = j + l;
        }
        if (HEIGHT - 5 - 1 <= j1)
        {
            j1 = j - girlLoc[byte0][players[1][3]][3];
        }
        girlTarget[0] = i1;
        girlTarget[1] = j1;
        girlTarget[2] = byte0;
        girlTarget[3] = getFastDistance(i1, j1, players[0][0], players[0][1]) /
            3;
        setGirlState( (byte) 1);
    }

    public void moveGirl()
    {
        if (players[1][2] != girlTarget[2])
        {
            if (girlCount == 0)
            {
                players[1][2] = getDirectTowardPoint(girlTarget[0],
                    girlTarget[1], players[1][0], players[1][1]);
            }
            else
            if (girlCount < 4)
            {
                if (girlCount == 2)
                {
                    players[1][2] = getDirectTowardPoint(girlTarget[0],
                        girlTarget[1], players[1][0], players[1][1]);
                }
                move(players, 1, (byte) players[1][2], (byte) girlTarget[3]);
            }
            else
            {
                players[1][0] = girlTarget[0];
                players[1][1] = girlTarget[1];
                players[1][2] = girlTarget[2];
            }
        }
        else
        {
            players[1][0] = girlTarget[0];
            players[1][1] = girlTarget[1];
            players[1][2] = girlTarget[2];
        }
    }

    public boolean isCollisionWithHero()
    {
        boolean flag = false;
        for (int j = nativeNum - 1; j >= 0; j--)
        {
            int i = getFastDistance(players[0][0], players[0][1], natives[j][0],
                                    natives[j][1]);
            if (i < 12)
            {
                if (natives[j][3] == 1 || natives[j][3] == 0)
                {
                    natives[j][3] = 6;
                    return true;
                }
            }
            else
            if (i < 45)
            {
                if (threadCount < 9 && natives[j][3] == 0 && !flag)
                {
                    if (threadCount == 4 || threadCount == 8)
                    {
                        byte byte0 = getDirectTowardPoint(players[0][0],
                            players[0][1], natives[j][0], natives[j][1]);
                        natives[j][0] += nativeLocPAdd[byte0 / 2][0];
                        natives[j][1] += nativeLocPAdd[byte0 / 2][1];
                        natives[j][3] = 1;
                        flag = true;
                        playSound("/native.ott", 4, 1);
                    }
                }
                else
                if (8 < threadCount && natives[j][3] == 0)
                {
                    byte byte1 = getDirectTowardPoint(players[0][0],
                        players[0][1], natives[j][0], natives[j][1]);
                    natives[j][0] += nativeLocPAdd[byte1 / 2][0];
                    natives[j][1] += nativeLocPAdd[byte1 / 2][1];
                    natives[j][3] = 1;
                    playSound("/native.ott", 4, 1);
                }
            }
        }

        return false;
    }

    private void checkCollisionWithBullet()
    {
        byte byte0 = -1;
        boolean flag = false;
        byte byte1 = 40;
        for (int j = nativeNum - 1; j >= 0; j--)
        {
            boolean flag1 = false;
            if (getFastDistance(players[0][0], players[0][1], natives[j][0],
                                natives[j][1]) < byte1 &&
                (natives[j][3] == 1 || natives[j][3] == 0))
            {
                if (natives[j][0] == players[0][0])
                {
                    if (natives[j][1] < players[0][1])
                    {
                        flag1 = players[0][2] == 2;
                    }
                    else
                    {
                        flag1 = players[0][2] == 6;
                    }
                }
                else
                if (natives[j][1] == players[0][1])
                {
                    if (natives[j][0] < players[0][0])
                    {
                        flag1 = players[0][2] == 4;
                    }
                    else
                    {
                        flag1 = players[0][2] == 0;
                    }
                }
                else
                {
                    boolean flag2 = players[0][0] < natives[j][0];
                    int i = ( (natives[j][1] - players[0][1]) * 100) /
                        (natives[j][0] - players[0][0]);
                    switch (players[0][2])
                    {
                        case 0: // '\0'
                            flag1 = -57 < i && i <= 57 && flag2;
                            break;

                        case 7: // '\007'
                            flag1 = 26 < i && i <= 373 && flag2;
                            break;

                        case 6: // '\006'
                            flag1 = (i <= -173 || 173 < i) &&
                                players[0][1] < natives[j][1];
                            break;

                        case 5: // '\005'
                            flag1 = -373 < i && i <= -26 && !flag2;
                            break;

                        case 4: // '\004'
                            flag1 = -57 < i && i <= 57 && !flag2;
                            break;

                        case 3: // '\003'
                            flag1 = 26 < i && i <= 373 && !flag2;
                            break;

                        case 2: // '\002'
                            flag1 = (i <= -173 || 173 < i) &&
                                natives[j][1] < players[0][1];
                            break;

                        case 1: // '\001'
                            flag1 = -373 < i && i <= -26 && flag2;
                            break;
                    }
                }
                if (flag1)
                {
                    natives[j][3] = 7;
                    dieNativeNum++;
                    score++;
                }
            }
        }

    }

    public void drawTree(Graphics g, Image image)
    {
        for (int i = treeArray.length - 1; i >= 0; i--)
        {
            int j = i % 2;
            int tmp1 = treeArray[i][1] * 5 - obstacleLoc[1 + j][4];
            int tmp2 = treeArray[i][0] * 5 - obstacleLoc[1 + j][5];
            int tmp3 = obstacleLoc[1 + j][2];
            int tmp4 = obstacleLoc[1 + j][3];

            /*
                         g.setClip(treeArray[i][1] * 5 - obstacleLoc[1 + j][4], treeArray[i][0] * 5 - obstacleLoc[1 + j][5],
                      obstacleLoc[1 + j][2], obstacleLoc[1 + j][3]);
                         g.drawImage(image, treeArray[i][1] * 5 - obstacleLoc[1 + j][4] - obstacleLoc[1 + j][0],
                 treeArray[i][0] * 5 - obstacleLoc[1 + j][5] - obstacleLoc[1 + j][1], 20);
             */
            g.setClip(tmp1, tmp2,
                      tmp3, tmp4);
            g.drawImage(image, tmp1 - obstacleLoc[1 + j][0],
                        tmp2 - obstacleLoc[1 + j][1], 20);
        }

    }

    public void drawBoard(Graphics g, Image image, Image image1, Image image2)
    {
        drawEmptyBlock(g, image2, 0, 0, ROWS / 2, COLUMNS / 2);
        clipAdrawImage(g, image, 0, 0, 120, 18, 0, 18);
        clipAdrawImage(g, image, 0, HEIGHT - 18, 120, 18, 0, 0);
        clipAdrawImage(g, image1, WIDTH - 18, GROUND_START_ROW * 5, 18, 120, 0,
                       0);
        clipAdrawImage(g, image1, 0, GROUND_START_ROW * 5, 18, 120, 18, 0);
        clipAdrawImage(g, image1, WIDTH - 18, 0, 18, 26, 0, 0);
        clipAdrawImage(g, image1, WIDTH - 18, HEIGHT - 26, 18, 26, 0, 94);
        clipAdrawImage(g, image1, 0, 0, 18, 26, 18, 0);
        clipAdrawImage(g, image1, 0, HEIGHT - 26, 18, 26, 18, 94);
    }

    public void drawRoad(Graphics g, Image image)
    {
        if (bgArray[GROUND_START_ROW + 9][COLUMNS - 2] == 4)
        {
            drawEmptyBlock(g, image, WIDTH - obstacleLoc[0][2],
                           (GROUND_START_ROW + 9) * 5, 3, 1);
            clipAdrawImage(g, image, WIDTH - 13, (GROUND_START_ROW + 9) * 5, 13,
                           7, 17, 0);
            clipAdrawImage(g, image, WIDTH - 13,
                           (GROUND_START_ROW + 15) * 5 - 9, 13, 9, 17, 7);
        }
        if (bgArray[1][9] == 4)
        {
            drawEmptyBlock(g, image, 45, 0, 1, 3);
            clipAdrawImage(g, image, 45, 0, 7, 13, 0, 12);
            clipAdrawImage(g, image, 66, 0, 9, 13, 7, 12);
        }
        if (bgArray[GROUND_START_ROW + 9][1] == 4)
        {
            drawEmptyBlock(g, image, 0, (GROUND_START_ROW + 9) * 5, 3, 1);
            clipAdrawImage(g, image, 0, (GROUND_START_ROW + 9) * 5, 13, 7, 29,
                           0);
            clipAdrawImage(g, image, 0, (GROUND_START_ROW + 15) * 5 - 9, 13, 9,
                           29, 7);
        }
        if (bgArray[ROWS - 2][9] == 4)
        {
            drawEmptyBlock(g, image, 45, HEIGHT - obstacleLoc[0][3], 1, 2);
            clipAdrawImage(g, image, 45, HEIGHT - 13, 7, 13, 0, 0);
            clipAdrawImage(g, image, 66, HEIGHT - 13, 9, 13, 7, 0);
        }
        boolean flag = false;
        for (int i = obstacle2[level].length - 1; i >= 0; i--)
        {
            int j = GROUND_START_ROW + obstacle2[level][i][0];
            byte byte0 = obstacle2[level][i][1];
            int k = i % 2;
            g.setClip(byte0 * 5 - obstacleLoc[3 + k][4],
                      j * 5 - obstacleLoc[3 + k][5], obstacleLoc[3 + k][2],
                      obstacleLoc[3 + k][3]);
            g.drawImage(image,
                        byte0 * 5 - obstacleLoc[3 + k][4] - obstacleLoc[3 +
                        k][0],
                        j * 5 - obstacleLoc[3 + k][5] - obstacleLoc[3 + k][1],
                        20);
        }

    }

    private void drawEmptyBlock(Graphics g, Image image, int i, int j, int k,
                                int l)
    {
        for (int i1 = 0; i1 < k; i1++)
        {
            for (int j1 = 0; j1 < l; j1++)
            {
                g.setClip(i + j1 * obstacleLoc[0][2], j + i1 * obstacleLoc[0][3],
                          obstacleLoc[0][2], obstacleLoc[0][3]);
                g.drawImage(image,
                            (i + j1 * obstacleLoc[0][2]) - obstacleLoc[0][0],
                            (j + i1 * obstacleLoc[0][3]) - obstacleLoc[0][1],
                            20);
            }

        }

    }

    public void drawObjects(Graphics g, Image image, Image image1, Image image2,
                            Image image3)
    {
        int i = players[0][2];
        int j = players[0][3];
        int l;
        int l1;
        if (players[0][3] == 3)
        {
            if ( -1 < bullet)
            {
                bulletCount = ( (byte) (bulletCount <= 0 ? 1 : 0));
                int k = players[0][0] - bulletLoc[i * 2 + bulletCount][4];
                int k1 = players[0][1] - bulletLoc[i * 2 + bulletCount][5];
                clipAdrawImage(g, image3, k, k1,
                               bulletLoc[i * 2 + bulletCount][2],
                               bulletLoc[i * 2 + bulletCount][3],
                               bulletLoc[i * 2 + bulletCount][0],
                               bulletLoc[i * 2 + bulletCount][1]);
                if (bulletCount == 0)
                {
                    playSound("/fire.ott", 3, 1);
                }
            }
            l = players[0][0] + heroRifleLoc[i][6];
            l1 = players[0][1] + heroRifleLoc[i][7];
            if (bulletCount == 1)
            {
                setHeroState( (byte) 0);
            }
        }
        else
        {
            l = players[0][0] + heroRifleLoc[i][4];
            l1 = players[0][1] + heroRifleLoc[i][5];
        }
        drawNative(g, image2);
        clipAdrawImage(g, image3, l, l1, heroRifleLoc[i][2], heroRifleLoc[i][3],
                       heroRifleLoc[i][0], heroRifleLoc[i][1]);
        if (players[0][3] == 1)
        {
            if (heroCount == 1)
            {
                heroCount = 0;
                setHeroState( (byte) 0);
            }
            else
            {
                heroCount++;
            }
            int i1 = players[0][0] - heroLoc[i][j + heroCount][2] / 2;
            int i2 = players[0][1] - heroLoc[i][j + heroCount][3] / 2;
            clipAdrawImage(g, image, i1, i2, heroLoc[i][j + heroCount][2],
                           heroLoc[i][j + heroCount][3],
                           heroLoc[i][j + heroCount][0],
                           heroLoc[i][j + heroCount][1]);
        }
        else
        {
            int j1 = players[0][0] - heroLoc[i][j][2] / 2;
            int j2 = players[0][1] - heroLoc[i][j][3] / 2;
            clipAdrawImage(g, image, j1, j2, heroLoc[i][j][2], heroLoc[i][j][3],
                           heroLoc[i][j][0], heroLoc[i][j][1]);
        }
        i = players[1][2];
        j = players[1][3];
        if (players[1][3] == 1)
        {
            if (girlCount == 4)
            {
                girlCount = 0;
                setGirlState( (byte) 0);
            }
            else
            {
                girlCount++;
            }
        }
        int k2 = j + girlCount % 2;
        clipAdrawImage(g, image1, players[1][0] - girlLoc[i][k2][4],
                       players[1][1] - girlLoc[i][k2][5], girlLoc[i][k2][2],
                       girlLoc[i][k2][3], girlLoc[i][k2][0], girlLoc[i][k2][1]);
    }

    public void drawCollision(Graphics g, Image image, Image image1)
    {
        int i = subSituCount % 3;
        clipAdrawImage(g, image, players[0][0] - collisionLoc[i][4],
                       players[0][1] - collisionLoc[i][5], collisionLoc[i][2],
                       collisionLoc[i][3], collisionLoc[i][0],
                       collisionLoc[i][1]);
        drawNative(g, image1);
        if (soundCount++ < 4)
        {
            playSound("/collision.ott", 7, 1);
        }
    }

    public void drawNative(Graphics g, Image image)
    {
        nativeCount = nativeCount <= 0 ? ++nativeCount : 0;
        for (int j1 = nativeNum - 1; j1 >= 0; j1--)
        {
            int i = natives[j1][2];
            switch (natives[j1][3])
            {
                case 1: // '\001'
                    clipAdrawImage(g, image,
                                   natives[j1][0] -
                                   nativeLoc[i][nativeCount][2] / 2,
                                   natives[j1][1] -
                                   nativeLoc[i][nativeCount][3] / 2,
                                   nativeLoc[i][nativeCount][2],
                                   nativeLoc[i][nativeCount][3],
                                   nativeLoc[i][nativeCount][0],
                                   nativeLoc[i][nativeCount][1]);
                    break;

                case 7: // '\007'
                    playSound("/nativedie.ott", 5, 1);
                    int j = nativeLoc[8][i / 4][2] / 2;

⌨️ 快捷键说明

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