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

📄 bombjackscreen.java

📁 一个很不错的炸弹人J2ME游戏源码.画面及音效质量都不错,可供新手学习使用.
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
            k = 0;
            if(enemy.type == 10 || enemy.type == 98 || enemy.type == 99)
            {
                enemy.mode = 0;
                enemy.jumpSpeed = 0;
                enemy.speedX = -enemy.speedX;
                enemy.cyclecount++;
                k = -100;
            } else
            {
                enemy.speedX *= -1;
            }
        }
        if((k != i || l != j) && enemy.type != 10 && enemy.type != 16)
            enemy.cyclecount = enemy.cyclesToRevision;
        return (new int[] {
            k, l
        });
    }

    public int checkXCollision(GameObject gameobject, int i)
    {
        int ai[][] = gameobject.getGridPos(i, 0);
        int ai1[] = new int[ai.length];
        for(int j = 0; j < ai1.length; j++)
            if(ai[j][0] < 0 || ai[j][1] < 0 || ai[j][0] > playfield[0].length - 1 || ai[j][1] > playfield.length - 1)
                ai1[j] = 1;
            else
                ai1[j] = playfield[ai[j][1]][ai[j][0]] % 100;

        if(ai1[0] == 1 || ai1[2] == 1)
            return 1;
        return ai1[1] != 1 && ai1[3] != 1 ? 0 : 16;
    }

    public int checkYCollision(GameObject gameobject, int i)
    {
        int ai[][];
        ai = gameobject.getGridPos(0, i);
        int ai1[] = new int[ai.length];
        for(int j = 0; j < ai1.length; j++)
            if(ai[j][0] < 0 || ai[j][1] < 0 || ai[j][0] >= playfield[0].length - 1 || ai[j][1] >= playfield.length - 1)
                ai1[j] = 0;
            else
                ai1[j] = playfield[ai[j][1]][ai[j][0]] % 100;

        if(ai[0][1] < 0)
            return 0x100000;
        if(ai[2][1] > playfield.length - 1)
            return 0x1000000;
        if(ai1[0] == 1 || ai1[1] == 1)
            return 256;
        if(ai1[2] == 1 || ai1[3] == 1)
            return 4096;
        if(gameobject.mode != 0) goto _L2; else goto _L1
_L1:
        int i1;
        int j1;
        int k = ai[ai.length - 1][1] + 1;
        int l = ai[ai.length - 2][0];
        i1 = 1;
        j1 = 1;
        if(k < playfield.length - 1)
        {
            i1 = playfield[k][l] % 100;
            j1 = playfield[k][l + 1] % 100;
        }
        if(i1 == 1 || j1 == 1)
            return 0x10000;
          goto _L2
        Exception exception;
        exception;
_L2:
        return 0;
    }

    public void moveEnemies()
    {
        if(powerball != null)
            applyEnemyMove(powerball);
        if(bonuscoin != null)
            applyEnemyMove(bonuscoin);
        if(extracoin != null)
            applyEnemyMove(extracoin);
        if(Player.player.powerMode)
            return;
        Enemy enemy = null;
label0:
        for(byte byte0 = 0; byte0 < robotFactories.length; byte0++)
        {
            enemy = Enemy.produceRobot(byte0);
            if(enemy == null)
                continue;
            int j = 0;
            do
            {
                if(j >= enemies.length)
                    continue label0;
                if(enemies[j] == null)
                {
                    enemy.ID = (short)(j + 3);
                    enemies[j] = enemy;
                    continue label0;
                }
                j++;
            } while(true);
        }

        enemy = null;
        for(int i = 0; i < enemies.length; i++)
        {
            Enemy enemy1 = enemies[i];
            if(enemy1 == null)
                continue;
            if(((GameObject) (enemy1)).mode == 6)
            {
                enemy1.appear();
                continue;
            }
            applyEnemyMove(enemy1);
            if(enemy1.type != 10 || ((GameObject) (enemy1)).y < (playfield.length - 2) * 7)
                continue;
            byte byte1 = enemy1.factory;
            if(enemy1.transformToUfo)
                enemies[i].init((byte)16, ((GameObject) (enemy1)).x, (playfield.length - 2) * 7, ImageLoader.getImage(3), i + 3);
            else
                enemies[i].init(otherEnemyType, ((GameObject) (enemy1)).x, (playfield.length - 3) * 7, otherEnemy, i + 3);
            enemies[i].factory = byte1;
            enemies[i].mode = 6;
            enemy1 = null;
            oldScrollX = -99;
        }

    }

    public void applyEnemyMove(Enemy enemy)
    {
        int ai[] = {
            0, 0
        };
        if(enemy.type == 10 || enemy.type == 98 || enemy.type == 99)
        {
            int i = ((GameObject) (enemy)).mode;
            ai = getEnemyMove(enemy, enemy.speedX, enemy.speedY);
            if(((GameObject) (enemy)).mode == 2)
            {
                if(enemy.cyclecount++ < enemy.cyclesToRevision)
                {
                    enemy.mode = 0;
                    enemy.jumpSpeed = 0;
                    ai[0] = enemy.direction != 0 ? -100 : 100;
                    ai[1] = 0;
                    enemy.speedX = -enemy.speedX;
                } else
                {
                    enemy.jumpSpeed += 5;
                    ai[1] = ((GameObject) (enemy)).jumpSpeed * 10;
                    if(ai[1] > 600)
                        ai[1] = 600;
                    ai[0] = 0;
                }
            } else
            if(((GameObject) (enemy)).mode == 0 && i == 2)
            {
                ai[1] = 0;
                ai[0] = 0;
                enemy.cyclecount = 1;
            }
        } else
        if(enemy.type == 12 || enemy.type == 14)
        {
            if(enemy.cyclecount++ >= enemy.cyclesToRevision)
            {
                int j = (((GameObject) (Player.player)).x + random.nextInt() % 17) - ((GameObject) (enemy)).x;
                int i1 = (((GameObject) (Player.player)).y + random.nextInt() % 20) - ((GameObject) (enemy)).y;
                enemy.cyclesToRevision = (20 - currentLevel) + random.nextInt() % 20;
                if(enemy.cyclesToRevision < 5)
                    enemy.cyclesToRevision = 5;
                enemy.cyclecount = 0;
                int i2 = 80 + currentLevel * 2;
                int k2 = enemy.speedX;
                int j3 = enemy.speedY;
                enemy.speedX = j >= 0 ? i2 : -i2;
                enemy.speedY = i1 >= 0 ? i2 : -i2;
                if(k2 < 0 && enemy.speedX < 0 || k2 > 0 && enemy.speedX > 0)
                    enemy.latencyX = 0;
                else
                    enemy.latencyX = k2;
                if(j3 < 0 && enemy.speedY < 0 || j3 > 0 && enemy.speedY > 0)
                    enemy.latencyY = 0;
                else
                    enemy.latencyY = j3;
                ai[0] = enemy.speedX + enemy.latencyX;
                ai[1] = enemy.speedY + enemy.latencyY;
            } else
            {
                ai = getEnemyMove(enemy, enemy.speedX + enemy.latencyX, enemy.speedY + enemy.latencyY);
            }
            enemy.latencyX = (enemy.latencyX * 98) / 100;
            enemy.latencyY = (enemy.latencyY * 98) / 100;
        } else
        if(enemy.type == 16)
        {
            if(enemy.cyclecount++ >= enemy.cyclesToRevision)
            {
                int k = ((GameObject) (Player.player)).x - ((GameObject) (enemy)).x;
                int j1 = ((GameObject) (Player.player)).y - ((GameObject) (enemy)).y;
                enemy.cyclecount = 0;
                if((random.nextInt() % 100) * 2 > 70)
                {
                    enemy.speedX = k * 7;
                    enemy.speedY = j1 * 7;
                    enemy.cyclesToRevision = 42;
                } else
                {
                    enemy.speedX = 1;
                    enemy.speedY = -20;
                    enemy.cyclesToRevision = 80;
                }
            } else
            {
                ai = getEnemyMove(enemy, enemy.speedX, enemy.speedY);
            }
        } else
        if(enemy.type == 11)
        {
            if(enemy.cyclecount++ >= enemy.cyclesToRevision)
            {
                int l = ((GameObject) (Player.player)).x - ((GameObject) (enemy)).x;
                int k1 = ((GameObject) (Player.player)).y - ((GameObject) (enemy)).y;
                enemy.cyclesToRevision = 30 - currentLevel;
                if(enemy.cyclesToRevision < 5)
                    enemy.cyclesToRevision = 5;
                enemy.cyclecount = 0;
                int j2 = 90 + currentLevel * 2;
                byte byte0 = 2;
                byte byte1 = 2;
                byte byte2 = 2;
                if(enemy.speedX < 0)
                    byte0 = 1;
                else
                if(enemy.speedX > 0)
                    byte0 = 0;
                if(enemy.speedY < 0)
                    byte0 = 4;
                else
                if(enemy.speedY > 0)
                    byte0 = 3;
                if(l * l > k1 * k1)
                {
                    byte1 = l >= 0 ? 1 : 0;
                    byte2 = k1 >= 0 ? 4 : 3;
                } else
                {
                    byte1 = k1 >= 0 ? 4 : 3;
                    byte2 = l >= 0 ? 1 : 0;
                }
                int ai2[] = {
                    0, 0, 0, 0, 0
                };
                int ai3[][] = enemy.getGridPos(0, 0);
                for(int k4 = 0; k4 < ai2.length; k4++)
                {
                    byte byte3 = 0;
                    byte byte4 = 0;
                    if(k4 == 0)
                        byte3 = -1;
                    else
                    if(k4 == 1)
                        byte3 = 1;
                    else
                    if(k4 == 3)
                        byte4 = -1;
                    else
                    if(k4 == 4)
                        byte4 = 1;
                    ai2[k4] = 1;
                    int j5 = 0;
                    do
                    {
                        if(j5 >= ai3.length)
                            break;
                        if(ai3[j5][0] + byte3 <= 0 || ai3[j5][1] + byte4 <= 0 || ai3[j5][0] + byte3 >= playfield[0].length - 1 || ai3[j5][1] + byte4 >= playfield.length - 1 || playfield[ai3[j5][1] + byte4][ai3[j5][0] + byte3] % 100 == 1)
                        {
                            ai2[k4] = -99;
                            break;
                        }
                        j5++;
                    } while(true);
                    if(k4 == byte1 && ai2[k4] > 0)
                        ai2[k4] += 2;
                    if(k4 == byte2 && ai2[k4] > 0)
                        ai2[k4]++;
                }

                ai2[byte0] = -1;
                ai2[2] = -99;
                int l4 = 2;
                for(int i5 = 0; i5 < ai2.length; i5++)
                    if(ai2[l4] < ai2[i5])
                        l4 = i5;

                switch(l4)
                {
                case 0: // '\0'
                    enemy.speedX = -j2;
                    enemy.speedY = 0;
                    break;

                case 1: // '\001'
                    enemy.speedX = j2;
                    enemy.speedY = 0;
                    break;

                case 3: // '\003'
                    enemy.speedY = -j2;
                    enemy.speedX = 0;
                    break;

                case 4: // '\004'
                    enemy.speedY = j2;
                    enemy.speedX = 0;
                    break;
                }
            } else
            {
                ai = getEnemyMove(enemy, enemy.speedX, enemy.speedY);
            }
        } else
        if(enemy.type == 13 || enemy.type == 15 || enemy.type == 97)
            ai = getEnemyMove(enemy, enemy.speedX, enemy.speedY);
        int ai1[][] = enemy.getGridPos(0, 0);
        int l1 = 1;
        l1 <<= enemy.ID;
        short word0 = (short)(~l1);
        for(int l2 = 0; l2 < ai1.length; l2++)
        {
            int k3 = ai1[l2][0];
            int i4 = ai1[l2][1];
            if(k3 >= 0 && k3 < enemymap[0].length - 1 && i4 >= 0 && i4 < enemymap.length - 1)
                enemymap[i4][k3] = (short)(enemymap[i4][k3] & word0);
        }

        enemy.move(ai[0], ai[1]);
        ai1 = enemy.getGridPos(0, 0);
        for(int i3 = 0; i3 < ai1.length; i3++)
        {
            int l3 = ai1[i3][0];
            int j4 = ai1[i3][1];
            if(l3 >= 0 && l3 < enemymap[0].length - 1 && j4 >= 0 && j4 < enemymap.length - 1)
                enemymap[j4][l3] = (short)(enemymap[j4][l3] | l1);
        }

    }

    public void paint(Graphics g)
    {
        Graphics g1;
        g1 = g;
        if(gameMode == 10 || !doPaint)
        {
            g1.setClip(0, 0, getWidth(), getHeight());
            g1.setColor(0);
            g1.fillRect(0, 0, getWidth(), getHeight());
            g1.setColor(0xffff40);
            g1.drawString("Please wait", getWidth() / 2, 50, 17);
            return;
        }
        Image image;
        int ai[];
        Font afont[];
        int l3;
        int i5;
        image = null;
        switch(gameMode)
        {
        case -1: 
        case 2: // '\002'
        case 3: // '\003'
        case 11: // '\013'
        case 12: // '\f'
        case 14: // '\016'
        case 50: // '2'
            image = Image.createImage(getWidth(), getHeight());
            break;
        }
        if(image != null)
            g1 = image.getGraphics();
        if(firstPaint || image != null)
        {
            firstPaint = false;
            g1.setClip(0, 0, getWidth(), getHeight());
            g1.setColor(0);
            g1.fillRect(0, 0, getWidth(), getHeight());
            if(gameMode == 1 || gameMode == -1 || gameMode == 11 || gameMode == 4 || gameMode == 3 || gameMode == 2)
            {
                for(int i = 0; i < 2; i++)
                {
                    if(currentLevel % 5 == 1)
                        g1

⌨️ 快捷键说明

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