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

📄 puyopuyo2.java

📁 手机游戏 SEGA《PuyoPuyo》 J2ME源代码+详细注释
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
    }

    static int Game_Main()
    {
        boolean flag = false;
        switch(stat_cnt)
        {
        case 0: // '\0'
            if(kar_anime == 0)
            {
                GameImage1_Init();
                if(nowLevel == 0)
                {
                    rest = next[nowLevel];
                    add_exp = 0;
                    exp = 0;
                    kar_anime = 35;
                    stat_cnt = 1;
                }
            } else
            if(kar_anime == 35)
                stat_cnt = 1;
            break;

        case 1: // '\001'
            if(Init_Select())
            {
                roulette_speed = 0;
                stat_cnt = 2;
            }
            break;

        case 2: // '\002'
            flag = true;
            if(roulette_speed++ > 10)
            {
                roulette_speed = 0;
                stat_cnt = 3;
            }
            break;

        case 3: // '\003'
            if(start_cnt++ == 20)
            {
                Init_Game();
                stat_cnt = 4;
                start_cnt = 100;
                intro_cnt = 0;
                intro_page = 0;
            }
            break;

        case 4: // '\004'
            if(start_cnt == 99)
            {
                stat_cnt = 5;
                start_cnt = 30;
            }
            break;

        case 5: // '\005'
            if(--start_cnt == 25)
                Draw_flag = true;
            if(start_cnt <= 0)
            {
                field[0].start();
                field[1].start();
                stopflag = false;
                Draw_flag = true;
                playBgm(1);
                stat_cnt = 6;
            }
            break;

        case 6: // '\006'
            if(check_pause())
                return -2;
            if(!key_pause)
            {
                int i = 0;
                do
                {
                    if(i >= 2)
                        break;
                    int j = keyRepeat & 0x6050;
                    if((keyPush & 0x11c25) != 0)
                        j = keyData & 0x6050;
                    if(!field[i].run(keyPush & 0x11c25 | j | keyData & 0x8100))
                    {
                        winner = i ^ 0x1;
                        field[winner].set_win();
                        stopBgm();
                        stopflag = true;
                        if(winner == 0)
                            clear_enemy[enemyNo] = true;
                        select_cnt = 0;
                        start_cnt = 0;
                        stat_cnt = 7;
                        gc.setColor(0);
                        gc.fillRect(offsetX, offsetY + 151, 150, 16);
                        break;
                    }
                    i++;
                } while(true);
            }
            break;

        case 7: // '\007'
            field[winner ^ 0x1].run(0);
            if(winner == 0)
            {
                if(!field[winner].run(keyPush))
                    return winner;
            } else
            if(!field[winner].run(keyPush) || (keyPush & 0x10c20) != 0 && my_scoref)
                return winner;
            break;
        }
        if(stat_cnt < 4)
            draw_select(flag);
        else
            draw_game();
        return -1;
    }

    static boolean check_pause()
    {
        if(!key_pause)
        {
            if((keyPush & 0x20000) != 0)
            {
                pauseBgm();
                key_pause = true;
                SaveData(false, false);
                field[0].pause_flag = true;
                field[1].pause_flag = true;
                Draw_flag = true;
            }
        } else
        if((keyPush & 0x20000) != 0)
            try
            {
                key_pause = false;
                resumeBgm();
                field[0].pause_flag = false;
                field[1].pause_flag = false;
                Draw_flag = true;
                System.gc();
            }
            catch(Throwable throwable) { }
        else
        if((keyPush & 0x40000) != 0)
        {
            try
            {
                key_pause = false;
                gc.setColor(0);
                gc.fillRect(offsetX, offsetY + 151, 150, 16);
                field[0].pause_flag = false;
                field[1].pause_flag = false;
                Draw_flag = true;
                SaveData(false, true);
                Init_Over();
            }
            catch(Throwable throwable1) { }
            return true;
        }
        return false;
    }

    static void Init_Over()
    {
        nowLevel = 0;
        enemyNo = 0;
        for(int i = 0; i < 17; i++)
            clear_enemy[i] = false;

        class_clear = 0;
        exp = 0;
        rest = next[nowLevel];
        add_exp = 0;
        my_score = 0;
    }

    private static void Init_Game()
    {
        int ai[] = new int[11];
        GameImage2_Init(1);
        GameImage2_Init(2);
        ai = enemy_argo[enemyNo];
        for(int i = 0; i < 128; i++)
            next_flag[i] = false;

        b_my_score = my_score;
        field[0].init(enemy_level[enemyNo], my_score, null);
        field[1].init(enemy_level[enemyNo], 0, ai);
        Draw_flag = true;
        select_cnt = 0;
    }

    public static int get_next(int i, int ai[])
    {
        if(next_flag[i])
        {
            next_flag[i] = false;
        } else
        {
            next_buf[i][0] = (byte)rnd(5);
            next_buf[i][1] = (byte)rnd(5);
            next_flag[i] = true;
        }
        ai[0] = next_buf[i][0];
        ai[1] = next_buf[i][1];
        return i + 1 & 0x7f;
    }

    public static void totalScore(int i, boolean flag)
    {
        if(i > 0x3b9ac9ff)
            i = 0x3b9ac9ff;
        if(!my_scoref)
        {
            class_clear = 0;
            my_scoref = true;
            my_score = i;
            st_score = i - b_my_score;
            if(flag && nowLevel == 4)
            {
                nowLevel++;
            } else
            {
                if(rest <= st_score)
                    if(flag)
                    {
                        if(nowLevel < 3)
                        {
                            rest += (next[nowLevel + 1] - next[nowLevel]) + (add_exp != 0 ? add_exp - 1 : 0);
                            add_exp = 0;
                        }
                        nowLevel++;
                        kar_anime = 0;
                        kar_jump = 0;
                    } else
                    {
                        st_score = rest - 1;
                    }
                if(nowLevel < 4)
                {
                    if((rest -= st_score) < 0)
                    {
                        add_exp = rest;
                        rest = 1;
                    }
                    exp += st_score;
                    for(int j = 0; j < enemy_class[nowLevel].length; j++)
                        if(!clear_enemy[enemy_class[nowLevel][j]])
                            class_clear++;

                    if(class_clear == 0 && ++nowLevel < 4)
                    {
                        rest = next[nowLevel] - next[nowLevel - 1];
                        exp = next[nowLevel - 1];
                        kar_anime = 0;
                        kar_jump = 0;
                    }
                }
            }
        }
    }

    private static boolean Init_Select()
    {
        boolean flag = false;
        if(((keyPush & 0x10c20) != 0 || rnd(10) == 0 && roulette_speed > 80 || class_clear == 1 || nowLevel == 4) && !clear_enemy[enemyNo])
        {
            my_scoref = false;
            return true;
        }
        if(roulette_speed < enemy_class[nowLevel].length * 2)
            flag = true;
        else
        if(roulette_speed < enemy_class[nowLevel].length * 6)
        {
            if(roulette_speed % 2 == 0)
                flag = true;
        } else
        if(roulette_speed < enemy_class[nowLevel].length * 12)
        {
            if(roulette_speed % 3 == 0)
                flag = true;
        } else
        if(roulette_speed % 4 == 0)
            flag = true;
        roulette_speed++;
        if(flag)
        {
            do
            {
                enemyNo = enemy_class[nowLevel][select_cnt];
                if(select_cnt == enemy_class[nowLevel].length - 1)
                    select_cnt = 0;
                else
                    select_cnt++;
            } while(clear_enemy[enemyNo]);
            boolean flag1 = false;
        }
        if(class_clear == 1)
        {
            my_scoref = false;
            return true;
        } else
        {
            return false;
        }
    }

    boolean Title_Main()
    {
        if(Draw_flag)
        {
            Draw_flag = false;
            c_Screen();
            if(!once)
            {
                playBgm(0);
                once = true;
            }
            if(title_mode >= 1)
                Draw_BackGraund();
            switch(title_mode)
            {
            default:
                break;

            case 0: // '\0'
                gc.drawImage(img_title[0], offsetX, offsetY, 20);
                drawCenter(0xffff00, "Press 5 Key To Start", 120 - font.getHeight());
                break;

            case 1: // '\001'
                drawCenter(0xffff80, "BEST RECORD", 12);
                switch(select_mode)
                {
                default:
                    break;

                case 0: // '\0'
                    drawCenter(0xc0c040, "SCORE", 32);
                    drawString(0xe0e080, "1st", 16, 50);
                    drawString(0xe0e080, "2nd", 16, 68);
                    drawString(0xe0e080, "3rd", 16, 86);
                    drawString(0xe0e080, "4th", 16, 104);
                    drawString(0xe0e080, "5th", 16, 122);
                    for(int i = 0; i < 5; i++)
                        drawString(0xe0ffe0, "" + hi_score[i], 130, 50 + i * 18, 24);

                    break;
                }
                break;

            case 2: // '\002'
                drawCenter(0xffff00, "HISTORY", 12);
                drawCenter(0xffffff, "\"Puyo Puyo 2\"", 35);
                drawCenter(0xffffff, "originally debuted", 52);
                drawCenter(0xffffff, "in 1994. All the", 69);
                drawCenter(0xffffff, "fun you remember", 86);
                drawCenter(0xffffff, "with new power-up", 103);
                drawCenter(0xffffff, "features.", 120);
                break;

            case 3: // '\003'
                drawCenter(0xffff00, "How To Play", 12);
                drawCenter(0xffffff, "Enter,*,#,5", 35);
                drawCenter(0xffffff, " .......Rotate Right", 52);
                drawCenter(0xffffff, "Up,2,0 ..Rotate Left", 69);
                drawCenter(0xffffff, "Down,8 ..Drop", 86);
                drawCenter(0xffffff, "Left,4,Right,6 ..Move", 103);
                drawCenter(0xffffff, "1 .. Sound ON/OFF", 120);
                break;
            }
            gc.setColor(0);
            gc.fillRect(offsetX, 151 + offsetY, 150, 16);
            gc.setColor(0xffffff);
            gc.drawString("EXIT", 145 + offsetX, offsetY + 151, 24);
            System.gc();
        }
        if((commonCounter & 0x10) == 0)
        {
            drawSprite(img_cur_arrow, 0, 75, 10, 10, 0);
            drawSprite(img_cur_arrow, 140, 75, 10, 10, 1);
        } else
        {
            if(title_mode == 0)
            {
                gc.setClip(offsetX, offsetY + 75, 10, 10);
                gc.drawImage(img_title[0], offsetX, offsetY, 20);
                gc.setClip(140 + offsetX, offsetY + 75, 10, 10);
                gc.drawImage(img_title[0], offsetX, offsetY, 20);
                gc.setClip(offsetX, offsetY, 150, 170);
            } else
            {
                gc.setColor(0xff8040);
                gc.fillRect(offsetX, offsetY + 75, 1, 10);
                gc.setColor(0x804020);
                gc.fillRect(1 + offsetX, offsetY + 75, 1, 10);
                gc.setColor(0x40a040);
                gc.fillRect(2 + offsetX, offsetY + 75, 8, 10);
                gc.setColor(0x40a040);
                gc.fillRect(140 + offsetX, offsetY + 75, 8, 10);

⌨️ 快捷键说明

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