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