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

📄 game.java

📁 j2me游戏都市骑士的代码,是一款横版格斗的游戏.可以学习参考.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// Decompiled by DJ v3.9.9.91 Copyright 2005 Atanas Neshkov  Date: 2005-11-26 11:41:02
// Home Page : http://members.fortunecity.com/neshkov/dj.html  - Check often for new version!
// Decompiler options: packimports(3) 

import java.io.IOException;
import java.io.PrintStream;
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;

class Game
    implements Constants
{

    public Game(GameCanvas gamecanvas)
    {
        GameStart = false;
        GameOver = false;
        GamePaused = false;
        score = 0;
        lvl = 127;
        level = 1;
        isSoundOn = true;
        isVibratorOn = true;
        lastscore = 0;
        lastlevel = 1;
        rnd = new Random();
        temp = "";
        gameOverCtr = 0;
        resetCtr = 0;
        enemyRemoveCtr = 0;
        RoadArms = new Vector();
        enemyMan = new Vector();
        ptr = new Vector();
        waitCtr = 0;
        cheatL = 0;
        scorpioCtr = 1;
        y2 = 0;
        vanishFlag = false;
        prevtime = 0L;
        hitting = false;
        index = -1;
        bonus = 0;
        x1 = 0;
        levelWeapon = 127;
        strypg = 0;
        msglp = -30;
        lag = 0L;
        m = 10;
        p = 0;
        q = 0;
        search = false;
        Gc = gamecanvas;
        WIDTH = 176;
        HEIGHT = 220;
        lvl = 127;
        mp = new MidPlayer();
        makeSound();
    }

    public void addPoints()
    {
        ptr.addElement(new point((short)(me.x + 60), (short)176));
        ptr.addElement(new point((short)(me.x + 70), (short)176));
        ptr.addElement(new point((short)(me.x + 80), (short)176));
        ptr.addElement(new point((short)(me.x + 50), (short)176));
        ptr.addElement(new point((short)(me.x + 90), (short)176));
    }

    public void addEnemy()
    {
        byte byte0 = 0;
        if(lvl == 1)
            byte0 = 0;
        else
        if(lvl == 2)
            byte0 = 1;
        else
        if(lvl == 3)
            byte0 = 2;
        boolean flag = false;
        point point1 = null;
        for(byte byte1 = 0; byte1 <= byte0; byte1++)
        {
            for(byte byte2 = 0; byte2 < 5; byte2++)
            {
                int j = (rnd.nextInt() >>> 1) % 5;
                point1 = (point)ptr.elementAt(j);
                if(point1.occupy)
                    continue;
                int i = j;
                ptr.removeElement(point1);
                break;
            }

            byte byte3 = 35;
            if(level > 7)
                byte3 = weapon2;
            Enemy enemy;
            if(byte0 == 0)
                enemy = new Enemy((short)(me.x + 40), (short)176, byte3, this);
            else
                enemy = new Enemy(point1.x, point1.y, byte3, this);
            enemy.jpCtr = 0;
            enemy.echainJumpCtr = 0;
            enemy.eaxeJumpCtr = 0;
            enemy.delayCtr = 0;
            enemyMan.addElement(enemy);
            if(point1 != null)
            {
                point1.occupy = true;
                ptr.addElement(point1);
            }
        }

    }

    public void drawWeaponLyingOnStreet(Graphics g)
    {
        for(Enumeration enumeration = RoadArms.elements(); enumeration.hasMoreElements();)
        {
            Arms arms = (Arms)enumeration.nextElement();
            switch(arms.id)
            {
            case 41: // ')'
                g.setClip(arms.x + x1, arms.y, 37, 10);
                g.clipRect(arms.x + x1, arms.y, 37, 10);
                g.drawImage(armsIm, arms.x + x1, arms.y, 0x10 | 4);
                break;

            case 39: // '\''
                g.setClip(arms.x + x1, arms.y, 52, 6);
                g.clipRect(arms.x + x1, arms.y, 52, 6);
                g.drawImage(armsIm, (arms.x + x1) - 37, arms.y - 3, 0x10 | 4);
                break;
            }
        }

        g.setClip(0, 0, WIDTH, HEIGHT);
    }

    public void weaponSelection()
    {
        boolean flag = false;
        if(lvl == 1)
        {
            byte abyte0[] = {
                41, 39
            };
            int i = (rnd.nextInt() >>> 1) % 2;
            weapon2 = abyte0[i];
        } else
        if(lvl == 2)
        {
            byte abyte1[] = {
                39, 41
            };
            int j = (rnd.nextInt() >>> 1) % 2;
            weapon2 = abyte1[j];
        } else
        if(lvl == 3)
        {
            byte abyte2[] = {
                41, 39
            };
            int k = (rnd.nextInt() >>> 1) % 2;
            weapon2 = abyte2[k];
        }
        Arms arms = new Arms(weapon2, (short)270, (short)192);
        RoadArms.addElement(arms);
    }

    public void enemyDieAnimation(Graphics g, Enemy enemy)
    {
        if(scorpioCtr == 1)
            y2 = enemy.y;
        switch(scorpioCtr)
        {
        default:
            break;

        case 1: // '\001'
        case 2: // '\002'
        case 3: // '\003'
        case 4: // '\004'
            g.setClip((enemy.x - 8) + x1, y2 - 7, 16, 15);
            g.clipRect((enemy.x - 8) + x1, y2 - 7, 16, 15);
            g.drawImage(vanish, ((enemy.x + x1) - 8) + vanish.getWidth() / 2, (y2 - 7) + vanish.getHeight() / 2, 1 | 2);
            scorpioCtr++;
            y2 -= 5;
            break;

        case 5: // '\005'
        case 6: // '\006'
        case 7: // '\007'
        case 8: // '\b'
            g.setClip((enemy.x - 8) + x1, y2 - 7, 16, 15);
            g.clipRect((enemy.x - 8) + x1, y2 - 7, 16, 15);
            g.drawImage(vanish, ((enemy.x + x1) - 8 - 16) + vanish.getWidth() / 2, (y2 - 7) + vanish.getHeight() / 2, 1 | 2);
            scorpioCtr++;
            y2 -= 10;
            break;

        case 9: // '\t'
        case 10: // '\n'
        case 11: // '\013'
        case 12: // '\f'
            g.setClip((enemy.x - 8) + x1, y2 - 7, 16, 15);
            g.clipRect((enemy.x - 8) + x1, y2 - 7, 16, 15);
            g.drawImage(vanish, (((enemy.x - 8) + x1) - 32) + vanish.getWidth() / 2, (y2 - 7) + vanish.getHeight() / 2, 1 | 2);
            scorpioCtr++;
            y2 -= 15;
            if(scorpioCtr > 12)
            {
                scorpioCtr = 1;
                vanishFlag = true;
            }
            break;
        }
    }

    public void Draw(Graphics g)
    {
        if(me == null)
            me = new Fighter((short)108, (short)176, this);
        drawBg1(g);
        drawPanel(g);
        if(me.health > 0 && enemyMan.isEmpty() && level <= 20)
        {
            if(resetCtr == 0 && level <= 20)
            {
                level++;
                if(cheatL > level)
                    level = cheatL;
                if(level > 4)
                {
                    RoadArms.removeAllElements();
                    weaponSelection();
                }
                if(level <= 20)
                {
                    Gc.loadCtr1 = 0;
                    Gc.page = 110;
                }
            }
            lastscore = score;
            resetCtr++;
            searchAnimation(g);
            if(Gc.loadCtr1 == 2)
            {
                g.setColor(255, 255, 0);
                g.setFont(Font.getFont(0, 0, 8));
                g.drawString(Gc.strtScr.Translate("Congratulation"), WIDTH / 2, HEIGHT / 2 - 17, 1 | 0x10);
                g.drawString(Gc.strtScr.Translate("Level") + " = " + level, WIDTH / 2, HEIGHT / 2, 1 | 0x10);
                if(resetCtr == 3)
                {
                    bonus = (lastlevel * lvl * (me.health * 100)) / 120;
                    score += bonus;
                }
                g.drawString(Gc.strtScr.Translate("Bonus") + " = " + bonus, WIDTH / 2, HEIGHT / 2 + 17, 1 | 0x10);
            }
            if(resetCtr == 20)
            {
                resetLevel();
                resetCtr = 0;
                search = false;
            }
        } else
        if(me.health <= 0 || level > 20)
        {
            lastscore = score;
            if(gameOverCtr == 1)
                if(me.health > 0);
            if(gameOverCtr == 25)
            {
                GameOver = true;
                gameOverCtr = 0;
            }
            if(me.health <= 0)
                me.dieSequence(g);
            g.setColor(255, 255, 0);
            g.setFont(Font.getFont(0, 0, 8));
            if(level > 20)
                g.drawString(Gc.strtScr.Translate("Congratulation"), WIDTH / 2, HEIGHT / 2 - 15, 1 | 0x10);
            g.drawString(Gc.strtScr.Translate("Game Over"), WIDTH / 2, HEIGHT / 2, 1 | 0x10);
            gameOverCtr++;
        }
        try
        {
            if(weapon2 != 127 && !me.weaponPicked && !search)
                drawWeaponLyingOnStreet(g);
        }
        catch(Exception exception)
        {
            System.out.println("arms lying exception" + exception);
            exception.printStackTrace();
        }
        Enumeration enumeration;
        for(enumeration = enemyMan.elements(); enumeration.hasMoreElements() && enemyMan.size() == 1;)
        {
            Enemy enemy = (Enemy)enumeration.nextElement();
            if(enemy.health <= 0)
            {
                if(enemyRemoveCtr == 20)
                {
                    enemyMan.removeElement(enemy);
                    enemyRemoveCtr = 0;
                    vanishFlag = false;
                } else
                {
                    if(!vanishFlag)
                        enemyDieAnimation(g, enemy);
                    enemy.enemyDieSequence(g);
                    enemyRemoveCtr++;
                }
            } else
            {
                if(me.y >= me.maxY && !me.backAttack && enemyMan.size() == 1)
                    if(me.x - enemy.x < 0)
                        me.face = 27;
                    else
                        me.face = 26;
                if(me.health <= 0)
                {
                    enemy.action = 13;
                    enemy.y = enemy.emaxY;
                }
                enemy.drawEnemy(g);
                if(enemy.ebackAttack)
                    enemy.enemyFall(g);
                else
                if(enemy.ehit && !enemy.ebackAttack)
                {
                    enemy.enemyHitted(g);
                    enemy.eattackedAnimation(g);
                }
            }
        }

        while(enumeration.hasMoreElements() && enemyMan.size() >= 1) 
        {
            Enemy enemy1 = (Enemy)enumeration.nextElement();
            if(enemy1.health <= 0)
            {
                if(enemyRemoveCtr == 20)
                {
                    enemyMan.removeElement(enemy1);
                    enemyRemoveCtr = 0;
                    vanishFlag = false;
                } else
                {
                    if(!vanishFlag)
                        enemyDieAnimation(g, enemy1);
                    enemy1.enemyDieSequence(g);
                    enemyRemoveCtr++;
                }
            } else
            {
                if(enemy1.action == 15)
                {
                    State = 15;
                    index = enemyMan.indexOf(enemy1);
                }
                if(index != enemyMan.indexOf(enemy1))
                {
                    if(System.currentTimeMillis() % 7L == 0L)
                        enemy1.action = 13;
                    else
                    if(enemy1.Dist > 35)
                    {
                        enemy1.action = 16;
                        if(enemy1.jpCtr > 0 && enemy1.y < enemy1.emaxY && enemy1.action != 19 && !enemy1.isWeapon)
                            enemy1.action = 19;
                    }
                    if(hitting)
                        if(enemy1.Dist <= 35)
                            enemy1.action = 15;
                        else
                            enemy1.action = 14;
                }
                if(enemy1.ehit)
                    hitting = true;
                else
                if(me.hit)
                    hitting = false;
                else
                if(!enemy1.ehit)
                    hitting = false;
                if(me.health <= 0)
                {
                    enemy1.action = 13;
                    enemy1.y = enemy1.emaxY;
                }
                enemy1.drawEnemy(g);
                if(enemy1.ebackAttack)
                    enemy1.enemyFall(g);
                else

⌨️ 快捷键说明

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