📄 bosscanvas.java
字号:
spaceBarge[j].setVisible(false);
break;
}
}
//击中监督者
for(int j =0; j< SUPERVISORCOUNTS; j++){
if (missile[i].collidesWith(supervisor[j], true)) {
addExplosion(supervisor[j]);
playerScores = playerScores + 10;
missile[i].setVisible(false);
supervisor[j].setVisible(false);
break;
}
}
//击中杀手卫星
for(int j =0; j< KILLERSATELLITESCOUNTS; j++){
if (missile[i].collidesWith(killerSatellites[j], true)) {
addExplosion(killerSatellites[j]);
playerScores = playerScores + 10;
missile[i].setVisible(false);
killerSatellites[j].setVisible(false);
break;
}
}
}
// boss开火
else if (missile[i].getFrame() == 3){
missile[i].move(0, 5);
if (missile[i].collidesWith(playerPlane, true)) {
addExplosion(playerPlane);
playerHP = playerHP - 5;
missile[i].setVisible(false);
}
} else if (missile[i].getFrame() == 4) {
missile[i].move(0, 5);
if (missile[i].collidesWith(playerPlane, true)) {
addExplosion(playerPlane);
playerHP = playerHP - 5;
missile[i].setVisible(false);
}
} else if (missile[i].getFrame() == 8) {
missile[i].move(0, 7);
if (missile[i].collidesWith(playerPlane, true)) {
addExplosion(playerPlane);
playerHP = playerHP - 5;
missile[i].setVisible(false);
}
} else if (missile[i].getFrame() == 12) {
missile[i].move(0, 5);
if (missile[i].collidesWith(playerPlane, true)) {
addExplosion(playerPlane);
playerHP = playerHP - 5;
missile[i].setVisible(false);
}
}
// 加人
else if (missile[i].getFrame() == 13) {
missile[i].move(0, 3);
if (missile[i].collidesWith(playerPlane, true)) {
playerLifeCounts = Math.min(playerLifeCounts + 1, 9);
missile[i].setVisible(false);
}
}
// 加血
else if (missile[i].getFrame() == 9) {
missile[i].move(0, 2);
if (missile[i].collidesWith(playerPlane, true)) {
playerHP = Math.min(playerHP + 5, 70);
missile[i].setVisible(false);
}
}
missile[i].checkBounds();
}
}
// =============导弹处理end==================
updateInfo();
}
public void checkBounds(GameSprites sprites, int action) {
if (action == GameSprites.BOUNCE) {
if (sprites.getX() < -sprites.getWidth()) {
sprites.setPosition(0, sprites.getY());
} else if (sprites.getX() > getWidth() + sprites.getWidth() / 2) {
sprites.setPosition(getWidth() - sprites.getWidth(), sprites
.getY());
}
}
}
public void updateInfo() {
if (playerHP <= 0) {
playerLifeCounts = playerLifeCounts - 1;
playerHP = 70;
}
if (playerLifeCounts == 0) {
playerHP = 0;
bossThread = null;
missionBossGameOver = false;
isWin = false;
dragonMidlet.backToMenu();
Dragon.MISSIONCOUNTS = -1;
Dragon.showMenu = true;
}
if (bossHP <= 0) {
bossThread = null;
missionBossGameOver = true;
isWin = true;
Dragon.MISSIONCOUNTS = Dragon.MISSIONOVER;
}
}
public void topInfoBar(Graphics g) {
g.setColor(0x999999);// 设定状态栏背景色是浅灰色
g.fillRect(0, 0, infoBarWidth, infoBarHeight);// 设定状态栏大小
g.drawImage(bossIconImage, 0, 0, Graphics.LEFT | Graphics.TOP);// 绘制Boss1头标
g.setColor(0xff0000);
g.drawRect(20, 4, 140, 8);
g.setColor(0xccff33);
if (bossHP < 40) {
g.setColor(0xff0000);
}
g.fillRect(20, 4, bossHP, 8);// 绘制boss
}
public void bottomInfoBar(Graphics g) {
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
Font.SIZE_SMALL));
// ===============绘制底部状态栏start===============
g.setColor(0x999999);// 设定状态栏背景色是浅灰色
g.fillRect(0, getHeight() - 20, infoBarWidth, infoBarHeight);// 设定状态栏大小
g.drawImage(playerIconImage, 0, getHeight() - 20, Graphics.LEFT
| Graphics.TOP);// 绘制player头标
g.setColor(0);
g.drawString(Integer.toString(playerLifeCounts), 20, getHeight() - 15,
Graphics.LEFT | Graphics.TOP);// 绘制生命数字符串
g.drawRect(30, getHeight() - 16, 70, 8);
g.setColor(0xccff00);
if (playerHP < 20) {
g.setColor(0xff0000);
}
g.fillRect(30, getHeight() - 16, playerHP, 8);// 绘制player血槽
g.setColor(0);// 设定字体颜色
g.drawString("SCORE:", 104, getHeight() - 18, Graphics.LEFT
| Graphics.TOP);// 绘制SCORES字符串
g.drawString(Integer.toString(playerScores), 142, getHeight() - 18,
Graphics.LEFT | Graphics.TOP);// 绘制SCORES
}
protected void drawIt(Graphics g) {
g.setFont(Font.getFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
Font.SIZE_SMALL));
g.drawImage(backgroundImage, 0, 0, Graphics.LEFT | Graphics.TOP);
topInfoBar(g);// 顶部信息栏
missileVisibleCounts(g);
bossCanvasLayer.paint(g, 0, 0);// 游戏主画面
bottomInfoBar(g);// 底部信息栏
if (stringShowCounts <= 38) {// 因为rate=40所以38表示1.5s,50表示2s
g.setColor(0xff0000);
g.drawString("Mission Boss", getWidth() / 2 - 35,
getHeight() / 2 - 10, Graphics.LEFT | Graphics.TOP);
g.drawString("Bloody Reverse", getWidth() / 2 - 50,
getHeight() / 2 + 10, Graphics.LEFT | Graphics.TOP);
}
if (missionBossGameOver) {
g.setColor(0xff0000);
g.drawString("mission Boss", getWidth() / 2 - 35,
getHeight() / 2 - 10, Graphics.LEFT | Graphics.TOP);
if (isWin) {
g.setColor(0xff0000);
g.drawString("Complete!", getWidth() / 2 - 25,
getHeight() / 2 + 10, Graphics.LEFT | Graphics.TOP);
System.out.println(playerScores);
System.out.println("win " + Dragon.MISSIONCOUNTS);
} else {
g.setColor(0xff0000);
g.drawString("You Lose!", getWidth() / 2 - 30,
getHeight() / 2 + 10, Graphics.LEFT | Graphics.TOP);
System.out.println(playerScores);
System.out.println("lose " + Dragon.MISSIONCOUNTS);
}
}
flushGraphics();
}
public void missileVisibleCounts(Graphics g) {
// ===========监测可见弹药数start=============
int missileCount = 0;
for (int i = 0; i < MISSILECOUNTS; i++) {
if (missile[i].isVisible())
missileCount++;
}
g.setColor(255, 255, 255);
g.drawString(Integer.toString(missileCount), 0, 25, Graphics.LEFT
| Graphics.TOP);
// ===========监测可见弹药数end===============
}
public int randomXPosition() {
return Math.abs(random.nextInt() % (getWidth() - 50) + 40);
}
public int randomYPosition() {
return Math.abs(random.nextInt() % (getHeight() - 100));
}
public void addCharacter(GameSprites sprites) {
sprites.setPosition(randomXPosition(), randomYPosition());
sprites.setVisible(true);
if (sprites == playerPlane) {
sprites.setPosition((getWidth() - playerPlane.getWidth()) / 2,
getHeight() - 40);
}
}
public void addMissile(GameSprites sprites) {
for (int i = 0; i < MISSILECOUNTS; i++) {
if (!missile[i].isVisible()) {
if (sprites == boss) {
missile[i].setFrame(6);
missile[i].setPosition(sprites.getX() + 42,
sprites.getY() + 70);
missile[i].setVisible(true);
break;
} else if (sprites == playerPlane) {
missile[i].setFrame(14);
missile[i].setPosition(sprites.getX()
+ (sprites.getWidth() / 2) - 7, sprites.getY() - 2);
missile[i].setVisible(true);
break;
}
}
}
}
public void addExplosion(Sprite sprites) {
for (int i = 0; i < EXPLOSIONCOUNTS; i++) {
if (!explosion[i].isVisible()) {
explosion[i].setFrame(0);
explosion[i].setPosition(sprites.getX() + sprites.getWidth()
/ 2, sprites.getY() + sprites.getHeight() / 2);
explosion[i].setVisible(true);
break;
}
}
}
public void randomPlace(Sprite sprites) {
sprites.setPosition(Math.abs(random.nextInt() % getWidth()), sprites
.getY());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -