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

📄 field.java

📁 手机游戏 SEGA《PuyoPuyo》 J2ME源代码+详细注释
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    private void set_priority(int i, int ai[])
    {
        int j3 = 2;
        for(int j = 1; j < 7; j++)
        {
            for(int i1 = 0; i1 < 2; i1++)
            {
                int k3;
                int l3;
                if((k3 = height[j] - i1) > 0)
                {
                    l3 = argo[4 + j] + AgesBase.rnd(argo[0]);
                    l3 += height[j] * argo[3];
                    l3 -= height[j - 1] + height[j + 1] << 1;
                    boolean flag = false;
label0:
                    for(int l1 = 0; l1 < 3; l1++)
                    {
                        int i4 = j + (l1 != 0 ? l1 != 1 ? -1 : 1 : 0);
                        int l4 = k3 + (l1 != 0 ? 0 : 1);
                        int ai1[] = field[i4 + l4 * 8];
                        if(ai1[0] != i)
                            continue;
                        if(ai1[2] == 3)
                        {
                            flag = true;
                            l3 += argo[1];
                            int k5 = i4 - 2;
                            do
                            {
                                if(k5 >= i4 + 3)
                                    continue label0;
                                if(k5 > 0 && k5 < 7)
                                {
                                    int l2 = height[k5];
                                    if(l2 < l4)
                                        l3 += l4 - l2 << 5;
                                    l2 -= ojama_num / 6;
                                    if(l2 < 8)
                                        l3 += (8 - l2) * (k5 != 3 ? 24 : 96);
                                }
                                k5++;
                            } while(true);
                        }
                        l3 += l1 != 0 ? 96 : 144;
                    }

                    if(!flag)
                    {
label1:
                        for(int i5 = k3 + 1; i5 < k3 + 4; i5++)
                        {
                            if(i5 >= 14)
                                continue;
                            int i2 = (j - 1) + i5 * 8;
                            int j4 = j - 1;
                            do
                            {
                                if(j4 >= j + 2)
                                    continue label1;
                                if(j4 > 0 && j4 < 7 && field[i2][0] == i)
                                    l3 += field[i2][2] << 3;
                                i2++;
                                j4++;
                            } while(true);
                        }

                        for(int j5 = k3 - 1; j5 > k3 - 4; j5--)
                        {
                            if(j5 <= 1)
                                continue;
                            int j2 = (j - 1) + j5 * 8;
                            for(int k4 = j - 1; k4 < j + 2; k4++)
                                if(k4 > 0 && k4 < 7 && field[j2][0] == i)
                                    l3 += field[j2][2] << 3;

                        }

                        int k2 = j + k3 * 8;
                        int i3 = field[k2 + 8][0];
                        if(i3 >= 0 && i3 < 5 && i3 != i)
                        {
                            l3 -= 32;
                            if((dif_puyo(i3, (k2 - 1) + 8) || dif_puyo(i3, k2 - 1)) && (dif_puyo(i3, k2 + 1 + 8) || dif_puyo(i3, k2 + 1)))
                                l3 -= field[k2 + 8][2] << 6;
                        }
                        i3 = field[k2 - 1][0];
                        if(i3 >= 0 && i3 < 5 && i3 != i && dif_puyo(i3, k2 - 1 - 8))
                            l3 -= field[k2 - 1 - 8][2] << 5;
                        i3 = field[k2 + 1][0];
                        if(i3 >= 0 && i3 < 5 && i3 != i && dif_puyo(i3, (k2 + 1) - 8))
                            l3 -= field[(k2 + 1) - 8][2] << 5;
                        if(j == 3 && height[3] < 4)
                            l3 = -10000;
                    }
                } else
                {
                    l3 = -10000;
                }
                ai[j3++] = l3;
            }

        }

        for(int k = 1; k < 3; k++)
        {
            if(height[k] >= 2)
                continue;
            for(int j1 = 2; j1 <= k << 1; j1 += 2)
            {
                ai[j1] = -10000;
                ai[j1 + 1] = -10000;
            }

        }

        for(int l = 4; l < 7; l++)
        {
            if(height[l] >= 2)
                continue;
            for(int k1 = l << 1; k1 < 14; k1 += 2)
            {
                ai[k1] = -10000;
                ai[k1 + 1] = -10000;
            }

        }

    }

    private boolean dif_puyo(int i, int j)
    {
        return field[j][0] != -1 && field[j][0] != i;
    }

    private int get_key()
    {
        int i = 0;
        int j = falling[0][1] % 8;
        if(j < target_x)
            i |= 0x4040;
        else
        if(j > target_x)
            i |= 0x2010;
        if(target_turn > 0)
            if(target_turn < 3)
            {
                target_turn--;
                i |= 0x10c20;
            } else
            {
                target_turn = 0;
                i |= 0x1005;
            }
        if(i == 0)
        {
            if(set_cnt < 0)
                return 33024;
            if(AgesBase.rnd(++set_cnt) + (now_priority >> 4) >= argo[2] + (level << 1))
                set_cnt = -1;
        }
        return i;
    }

    public void draw(boolean flag)
    {
        if(bonus3[player] == 1)
            PuyoPuyo2.drawSprite(PuyoPuyo2.img_spr[0], sx + 5, sy + 38, 0, 0, 0);
        else
        if(bonus3[player] == 2)
        {
            flag = true;
            bonus3[player] = 0;
        }
        if(ojama_kill[player] == 0)
        {
            flag = true;
            ojama_kill[player]--;
        }
        if(flag)
        {
            int i = 17;
            for(int j1 = 13; j1 > 0; j1--)
            {
                for(int k = 6; k > 0; k--)
                    field[i++][1] = 1;

                i += 2;
            }

            for(int l = 0; l < 3; l++)
                draw_flag[l] = true;

        }
        int j = 17;
        int i1 = stat != 8 || land_cnt < 12 ? 12 : 13;
        for(short word3 = (short)(sy - 2); i1 > 0; word3 += 10)
        {
            int k1 = 6;
            for(short word0 = sx; k1 > 0; word0 += 10)
            {
                int l2 = 0;
                int ai[] = field[j++];
                if(ai[1] != 0)
                {
                    int l1;
                    int k2;
                    if((l1 = ai[0]) == -1 || pause_flag)
                        k2 = 0;
                    else
                    if(l1 < 5)
                    {
                        l2 = ai[3];
                        k2 = 3 + l1;
                        if(ai[2] >= 4)
                            if(erase_cnt >= 11)
                                l2 = 16;
                            else
                            if((erase_cnt & 0x1) == 0)
                                k2 = 0;
                    } else
                    if(ai[2] < 4 || (erase_cnt & 0x1) != 0)
                    {
                        k2 = 1;
                        l2 = 1;
                    } else
                    {
                        k2 = 0;
                    }
                    PuyoPuyo2.gc.setColor(0);
                    PuyoPuyo2.gc.fillRect(word0 + AgesBase.offsetX, word3 + AgesBase.offsetY, 10, 10);
                    if(k2 != 0)
                        PuyoPuyo2.drawSprite(PuyoPuyo2.img_spr[k2], word0, word3, 10, 10, l2);
                    ai[1] = 0;
                }
                if(i1 == 10 && bonus3[player] == 1 && ai[0] != -1)
                    bonus3[player] = 2;
                k1--;
            }

            j += 2;
            i1--;
        }

        if(ojama_kill[player] > 0)
        {
            PuyoPuyo2.drawSprite(PuyoPuyo2.img_spr[8 + (ojama_kill[player] % 2 != 0 ? 1 : 0)], sx + 3, sy - 3, 0, 0, 0);
            ojama_kill[player]--;
        }
        switch(stat)
        {
        case 8: // '\b'
            if(land_cnt >= 40 && enemy.player == 1)
            {
                PuyoPuyo2.draw_message("GAME", sx + 15, sy + 40, 0, 0);
                PuyoPuyo2.draw_message("OVER", sx + 20, sy + 54, 0, 0);
                PuyoPuyo2.totalScore(score + d_score, false);
            }
            break;

        case 9: // '\t'
            if(player == 0 && land_cnt > 40)
            {
                PuyoPuyo2.gc.setColor(0);
                PuyoPuyo2.gc.fillRect(sx + AgesBase.offsetX, sy + AgesBase.offsetY, 60, 118);
                PuyoPuyo2.draw_message("YOU WIN", sx + 7, sy + 20, 0, 0);
                PuyoPuyo2.draw_message("PLAY TIME", sx + 3, sy + 41, 27, 0);
                PuyoPuyo2.draw_value(pass_time, sx + 40, sy + 52, 0);
                PuyoPuyo2.draw_message("SEC", sx + 40, sy + 55, 27, 0);
                PuyoPuyo2.draw_message("BONUS", sx + 12, sy + 70, 27, 0);
                PuyoPuyo2.draw_value(d_score, sx + 40, sy + 81, 0);
                PuyoPuyo2.draw_message("PTS", sx + 40, sy + 84, 27, 0);
                PuyoPuyo2.totalScore(score + d_score, true);
            }
            break;
        }
        if(draw_flag[2])
        {
            PuyoPuyo2.gc.setColor(0);
            if(player == 0)
                PuyoPuyo2.gc.fillRect(60 + AgesBase.offsetX, AgesBase.offsetY, 30, 75);
            else
                PuyoPuyo2.gc.fillRect(60 + AgesBase.offsetX, 75 + AgesBase.offsetY, 30, 75);
            PuyoPuyo2.drawSprite(PuyoPuyo2.img_spr[3 + next_col[1]], next_x, next_y, 10, 10, 0);
            PuyoPuyo2.drawSprite(PuyoPuyo2.img_spr[3 + next_col[0]], next_x, next_y + 10, 10, 10, 0);
            PuyoPuyo2.drawSprite(PuyoPuyo2.img_spr[3 + next2_col[1]], next2_x, next2_y, 10, 10, 0);
            PuyoPuyo2.drawSprite(PuyoPuyo2.img_spr[3 + next2_col[0]], next2_x, next2_y + 10, 10, 10, 0);
            PuyoPuyo2.gc.drawImage(PuyoPuyo2.img_gframe2, 60 + AgesBase.offsetX, AgesBase.offsetY, 20);
            PuyoPuyo2.draw_message("NEXT", 61, 75, 0, 2);
            draw_flag[2] = false;
            if(player == 0)
                PuyoPuyo2.score_get(score);
        }
        if(draw_flag[0])
        {
            short word1 = sx;
            short word4 = (short)(sy - 24);
            PuyoPuyo2.gc.setColor(0);
            PuyoPuyo2.gc.fillRect(word1 + 5 + AgesBase.offsetX, word4 + AgesBase.offsetY, 50, 10);
            word1 += 59;
            if(erase_score == 0)
            {
                PuyoPuyo2.draw_value(score, word1 - 4, word4, player != 0 ? 1 : 0);
            } else
            {
                int i2;
                if((i2 = erase_bonus) > 1)
                {
                    word1 = (short)(PuyoPuyo2.draw_value(i2, word1 - 4, word4, player != 0 ? 1 : 0) - 6);
                    PuyoPuyo2.drawSprite(PuyoPuyo2.img_font[player != 0 ? 1 : 0], word1 - 4, word4 - 2, 10, 10, 36);
                    word1 -= 2;
                }
                PuyoPuyo2.draw_value(erase_score, word1 - 4, word4, player != 0 ? 1 : 0);
            }
            draw_flag[0] = false;
        }
        boolean flag1 = false;
        int j2 = ojama_num;
        short word2 = sx;
        short word5 = (short)(sy - 12);
        draw_ojama_field();
        byte byte0;
        for(; j2 > 0 && word2 < (sx + 60) - 10; word2 += byte0)
        {
            byte byte1;
            byte byte2;
            if(j2 >= 400)
            {
                byte1 = 2;
                byte2 = 3;
                byte0 = 9;
                j2 -= 400;
            } else
            if(j2 >= 300)
            {
                byte1 = 2;
                byte2 = 2;
                byte0 = 9;
                j2 -= 300;
            } else
            if(j2 >= 200)
            {
                byte1 = 2;
                byte2 = 1;
                byte0 = 9;
                j2 -= 200;
            } else
            if(j2 >= 30)
            {
                byte1 = 2;
                byte2 = 0;
                byte0 = 9;
                j2 -= 30;
            } else
            if(j2 >= 6)
            {
                byte1 = 1;
                byte2 = 1;
                byte0 = 9;
                j2 -= 6;
            } else
            {
                byte1 = 1;
                byte2 = 0;
                byte0 = 7;
                j2--;
            }
            PuyoPuyo2.drawSprite(PuyoPuyo2.img_spr[byte1], word2, word5, 10, 10, byte2);
        }

        draw_flag[1] = false;
    }

    public void draw_ojama_field()
    {
        ojamaImg.getGraphics().drawImage(PuyoPuyo2.img_gframe, 0, -15, 20);
        PuyoPuyo2.gc.drawImage(ojamaImg, sx + AgesBase.offsetX, 15 + AgesBase.offsetY, 20);
    }

}

⌨️ 快捷键说明

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