📄 game.java
字号:
// 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 + -