📄 frboss.java
字号:
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.Sprite;
//import com.nokia.mid.ui.DirectGraphics;
public class FrBoss extends Boss {
public FrBoss() {
//world = World.getInstance();
//planeActor = BattlePlaneActor.getInstance();
xSpeed = new int[9]; // 初始化子弹的XY上的速度
ySpeed = new int[9];
initNormalFightXYSpeed();
//
// xCirlceSpeed = new int[24]; // 初始化疯狂攻击子弹的XY上的速度
// yCirlceSpeed = new int[24];
xCirlceSpeed = new int[20]; // 初始化疯狂攻击子弹的XY上的速度
yCirlceSpeed = new int[20];
initCrazyFightXYSpeed();
}
public void initData() {
moveSpeed = 3;
bulletInterval = 2;
bossAirship = new CImage("/frBoss.png");
setIPosX(GameConstant.iSCREEN_WIDTH >> 1);
setIPosY(-97);
smallCannon = new Cannon[6];
for (int i = 0; i < smallCannon.length; i++) {
smallCannon[i] = new Cannon("/cannon.png");
smallCannon[i].setEnemyLife(60); // 没个小炮塔设置30血
smallCannon[i].setIWidth(13 << 8);
smallCannon[i].setIHeight(12 << 8);
}
artillery = new Cannon("/cannon.png"); // 大炮
doubleCannon = new Cannon("/cannon.png");// 双管炮
cirlceCannon = new Cannon[2];
for (int cirIdx = 0; cirIdx < cirlceCannon.length; cirIdx++) {
cirlceCannon[cirIdx] = new Cannon("/cannon.png");
cirlceCannon[cirIdx].setEnemyLife(120);
cirlceCannon[cirIdx].setIWidth(16<<8);
cirlceCannon[cirIdx].setIHeight(15<<8);
}
bossCannon = new Cannon(); // boss炮
// 设置小炮的位置
smallCannon[0].setIPosX((getIPosX() - 68) << 8);
smallCannon[0].setIPosY((getIPosY() - 4) << 8);
smallCannon[1].setIPosX((getIPosX() + 55) << 8);
smallCannon[1].setIPosY((getIPosY() - 4) << 8);
smallCannon[2].setIPosX((getIPosX() - 40) << 8);
smallCannon[2].setIPosY((getIPosY() + 19) << 8);
smallCannon[3].setIPosX((getIPosX() + 27) << 8);
smallCannon[3].setIPosY((getIPosY() + 19) << 8);
smallCannon[4].setIPosX((getIPosX() - 68) << 8);
smallCannon[4].setIPosY((getIPosY() - 45) << 8);
smallCannon[5].setIPosX((getIPosX() + 55) << 8);
smallCannon[5].setIPosY((getIPosY() - 45) << 8);
// 设置大炮的位置
artillery.setIPosX((getIPosX() - 12) << 8);
artillery.setIPosY((getIPosY() + 18) << 8);
artillery.setEnemyLife(240);
artillery.setIWidth(24 << 8);
artillery.setIHeight(19 << 8);
// 设置双管炮的位置
doubleCannon.setIPosX((getIPosX() - 15) << 8);
doubleCannon.setIPosY((getIPosY() - 33) << 8);
doubleCannon.setEnemyLife(150);
doubleCannon.setIWidth(31 << 8);
doubleCannon.setIHeight(17 << 8);
// 设置圆泡的位置
cirlceCannon[0].setIPosX((getIPosX() - 36) << 8);
cirlceCannon[0].setIPosY((getIPosY() - 51) << 8);
cirlceCannon[1].setIPosX((getIPosX() + 14) << 8);
cirlceCannon[1].setIPosY((getIPosY() - 51) << 8);
// BOSS炮
bossCannon.setIPosX((getIPosX() - 19) << 8);
bossCannon.setIPosY((getIPosY() - 91) << 8);
bossCannon.setEnemyLife(200);
bossCannon.setIWidth(39 << 8);
bossCannon.setIHeight(34 << 8);
BOSS_STATE = GameConstant.STATE_BOSS_APPEAR;
//BOSS_STATE = GameConstant.STATE_BOSS_SEC_APPEAR;
}
public void changeMyState() {
switch (BOSS_STATE) {
case GameConstant.STATE_BOSS_APPEAR:
dealAutoMove();
break;
case GameConstant.STATE_BOSS_NORMAL_FIGHT:
normalFight();
isCollide();
break;
case GameConstant.STATE_BOSS_SEC_APPEAR:
dealAutoMove();
break;
case GameConstant.STATE_BOSS_CRAZY_FIGHT:
crazyFight();
isCollide();
break;
case GameConstant.STATE_BOSS_DIE:
//if(bulletInterval == 60){
if ((planeActor.getIPosY() >> 8) <= 0) {
planeActor.setIDy(0);
world.cleanAllObecjt();
gameScreen = GameScreen.getInstance();
gameScreen.StopSound();
world.setGameLevel((byte) 2);
world.setBossAppear(false);
GameScreen.gameState = GameConstant.STATE_GAME_LOAD; // 加载
//GameScreen.gameState = GameConstant.STATE_GAME_TASKCOMPLETE;
break;
}
bomb(getIPosX() << 8, getIPosY() << 8, 0, 0);
//bulletInterval++;
break;
}
}
public void dealAutoMove() {
int posY = getIPosY() + moveSpeed;
switch (BOSS_STATE) {
case GameConstant.STATE_BOSS_APPEAR:
if (getIPosY() >= 0) {
BOSS_STATE = GameConstant.STATE_BOSS_NORMAL_FIGHT;
} else {
setIPosY(posY);
changeWeaponState(moveSpeed << 8);
}
break;
case GameConstant.STATE_BOSS_SEC_APPEAR:
if (getIPosY() >= 97) {
BOSS_STATE = GameConstant.STATE_BOSS_CRAZY_FIGHT;
} else {
setIPosY(posY);
changeWeaponState(moveSpeed << 8);
}
break;
}
}
public void draw(Graphics graphics) {
graphics.setClip(0, 0, GameConstant.iSCREEN_WIDTH,
GameConstant.iSCREEN_HEIGHT);
bossAirship.drawImage(graphics, getIPosX(), getIPosY(),
GameConstant.RIGHTCENTER);
// bossAirship.drawImage(graphics, 0, 0, 100, 195,
// DirectGraphics.FLIP_HORIZONTAL, getIPosX(), getIPosY() + 1,
// GameConstant.LEFTCENTER);
bossAirship.drawRegionImage(graphics, 0, 0, 100, 195,
Sprite.TRANS_MIRROR, getIPosX(), getIPosY(),
GameConstant.LEFTCENTER);
drawWeapon(graphics);
graphics.setClip(0, 0, GameConstant.iSCREEN_WIDTH,
GameConstant.iSCREEN_HEIGHT);
}
public void changeWeaponState(int moveSpeed) {
switch (BOSS_STATE) {
case GameConstant.STATE_BOSS_APPEAR:
for (int sCannonIdx = 0; sCannonIdx < 6; sCannonIdx++) {
smallCannon[sCannonIdx].setIPosY(smallCannon[sCannonIdx]
.getIPosY()
+ moveSpeed);
}
artillery.setIPosY(artillery.getIPosY() + moveSpeed);
doubleCannon.setIPosY(doubleCannon.getIPosY() + moveSpeed);
for (int cCannonIdx = 0; cCannonIdx < 2; cCannonIdx++) {
cirlceCannon[cCannonIdx].setIPosY(cirlceCannon[cCannonIdx]
.getIPosY()
+ moveSpeed);
}
bossCannon.setIPosY(bossCannon.getIPosY() + moveSpeed);
break;
case GameConstant.STATE_BOSS_SEC_APPEAR:
for (int idx = 4; idx < 6; idx++) {
smallCannon[idx].setIPosY(smallCannon[idx].getIPosY()
+ moveSpeed);
}
doubleCannon.setIPosY(doubleCannon.getIPosY() + moveSpeed);
for (int cCannonIdx = 0; cCannonIdx < 2; cCannonIdx++) {
cirlceCannon[cCannonIdx].setIPosY(cirlceCannon[cCannonIdx]
.getIPosY()
+ moveSpeed);
}
bossCannon.setIPosY(bossCannon.getIPosY() + moveSpeed);
break;
}
}
public void drawWeapon(Graphics graphics) {
switch (BOSS_STATE) {
case GameConstant.STATE_BOSS_APPEAR:
case GameConstant.STATE_BOSS_NORMAL_FIGHT:
if (artillery.getEnemyLife() > 0) {
// 画下面4门小炮
for (int sCannonIdx = 0; sCannonIdx < 4; sCannonIdx++) {
if (smallCannon[sCannonIdx].getEnemyLife() > 0) {
smallCannon[sCannonIdx].draw(graphics, 56, 0, 13, 28,
GameConstant.TOPLEFT);
}
}
// 画大炮
artillery.draw(graphics, 32, 0, 24, 37, GameConstant.TOPLEFT);
} else {
for (int i = 0; i < 4; i++) {
smallCannon[i] = null;
}
artillery = null;
bulletTimes = 30;
BOSS_STATE = GameConstant.STATE_BOSS_SEC_APPEAR;
}
break;
case GameConstant.STATE_BOSS_SEC_APPEAR:
case GameConstant.STATE_BOSS_CRAZY_FIGHT:
for (int idx = 4; idx < 6; idx++) {
if (smallCannon[idx].getEnemyLife() > 0) {
smallCannon[idx].draw(graphics, 56, 0, 13, 28,
GameConstant.TOPLEFT);
}
}
if (doubleCannon.getEnemyLife() > 0) {
doubleCannon.draw(graphics, 0, 0, 32, 26, GameConstant.TOPLEFT);
}
for (int cCannonIdx = 0; cCannonIdx < 2; cCannonIdx++) {
if (cirlceCannon[cCannonIdx].getEnemyLife() > 0) {
cirlceCannon[cCannonIdx].draw(graphics, 69, 0, 22, 20,
GameConstant.TOPLEFT);
}
}
break;
}
}
public void normalFight() {
if (artillery.getEnemyLife() > 0) { // 如果双管炮爆炸就不产生子弹
for (int i = 0; i < 4; i++) {
if (bulletTimes % 30 == 0) {
if (smallCannon[i].getEnemyLife() > 0) { // 如果血量大于0就产生子弹
world.newBullet(3,
smallCannon[i].getIPosX() + (7 << 8),
smallCannon[i].getIPosY() + (24 << 8), 0,
-5 << 8);
}
}
}
if (bulletTimes % 70 == 0) {
bulletTimes = 30;
for (int idx = 0; idx < 9; idx++) {
world.newBullet(2, artillery.getIPosX() + (11 << 8),
artillery.getIPosY() + (38 << 8), xSpeed[idx],
ySpeed[idx]);
}
}
bulletTimes++;
}
}
public void crazyFight() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -