📄 otherplane.java
字号:
package src;
import java.io.IOException;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
public class OtherPlane {
KingCanvas KC;
PlayerMusic PM = new PlayerMusic();
int PlaneX, PlaneY;
int PlaneWidth, PlaneHeight, MusicTest;
int PlaneState;
boolean bFlagOtherPlaneHP, bFlagOtherPlaneState, bFlagMissileState,
bFlagMissileDisplay, bFlagPlaneArticleDisplay, isMusic,
bFlagMissileTest;
static Image Plane, PlaneExplosion, PlaneArticle, Missile;
int ExplosionNumber, PlaneArticleNumber;
int PlaneHP, fraction, ColorCounter;
int OtherPlaneDisplacementCounter;
int Explosion_X, Explosion_Y, PlaneArticle_X, PlaneArticle_Y, Missile_X,
Missile_Y;
public OtherPlane(KingCanvas KC) {
this.KC = KC;
InitPlane();
}
/**
* 初始化中型飞机属性及相关图片加载处理方法
*/
public void InitPlane() {
PlaneX = KC.GetRandom(144);
PlaneY = -KingCanvas.SCREEN_HEIGHT << 1;
PlaneWidth = 35;
PlaneHeight = 26;
PlaneHP = 96;
MovePlaneState();
bFlagMissileDisplay = true;
try {
Plane = Image.createImage("/res/picture/bigplane.png");
PlaneExplosion = Image.createImage("/res/picture/leadingbom_.png");
PlaneArticle = Image.createImage("/res/picture/treasure.png");
Missile = Image.createImage("/res/picture/missile.png");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 移动中型飞机处理方法
*/
public void MoveOtherPlane() {
if (PlaneY <= 40)
PlaneY++;
if (bFlagOtherPlaneState == false) {
switch (PlaneState) {
case 1:
PlaneX--;
if (PlaneX == 0)
OtherPlaneDisplacementCounter++;
if (PlaneX <= 0)
PlaneState = 2;
break;
case 2:
PlaneX++;
if (PlaneX + PlaneWidth >= KingCanvas.SCREEN_WIDTH)
PlaneState = 1;
break;
case 0:
PlaneY++;
PlaneState = 2;
break;
}
if (OtherPlaneDisplacementCounter == 4) {
bFlagOtherPlaneState = true;
OtherPlaneDisplacementCounter = 0;
}
if (PlaneY == 20) {
bFlagMissileDisplay = false;
bFlagMissileState = true;
Missile_X = PlaneX + 5;
Missile_Y = PlaneY + 16;
}
}
if (bFlagOtherPlaneState == true) {
switch (PlaneState) {
case 1:
PlaneX--;
if (PlaneX <= 0)
PlaneState = 2;
break;
case 2:
PlaneX++;
if (PlaneX + PlaneWidth >= KingCanvas.SCREEN_WIDTH)
PlaneState = 1;
break;
}
PlaneY -= 2;
if (PlaneY + Plane.getHeight() <= 0) {
PlaneY = -KingCanvas.SCREEN_HEIGHT << 1;
PlaneX = KC.GetRandom(160);
PlaneHP = 96;
MovePlaneState();
Missile_X += KingCanvas.SCREEN_WIDTH;
Missile_Y += KingCanvas.SCREEN_HEIGHT;
bFlagMissileState = false;
bFlagMissileDisplay = true;
bFlagOtherPlaneState = false;
}
}
if (bFlagOtherPlaneHP == true) {
KC.ScoreCounter += 20;
PlaneY = -KingCanvas.SCREEN_HEIGHT << 1;
PlaneX = KC.GetRandom(160);
PlaneHP = 96;
OtherPlaneDisplacementCounter = 0;
MovePlaneState();
bFlagMissileTest = true;
bFlagOtherPlaneState = false;
}
}
/**
* 导弹移动及碰撞处理方法
*/
public void MoveMissile() {
if (Missile_Y > KingCanvas.SCREEN_HEIGHT) {
Missile_X = PlaneX + 5;
Missile_Y = PlaneY + 16;
if (bFlagMissileTest == true) {
bFlagMissileState = false;
bFlagMissileDisplay = true;
Missile_X += KingCanvas.SCREEN_WIDTH;
Missile_Y += KingCanvas.SCREEN_HEIGHT;
bFlagMissileTest = false;
}
} else {
if (bFlagMissileState == true) {
if (Missile_X > KC.LeadingPlane_X + 16) {
Missile_X -= 2;
}
if (Missile_X < KC.LeadingPlane_X - 16) {
Missile_X += 2;
}
Missile_Y += 4;
if (KC.bFlagLeadingPlaneCollide == false) {
if (KC.isRam(Missile_X, Missile_Y, Missile.getWidth(),
Missile.getHeight(), KC.LeadingPlane_X + 4,
KC.LeadingPlane_Y + 4, KingCanvas.imageLeadingPlane
.getWidth() - 8,
(KingCanvas.imageLeadingPlane.getHeight() / 3) - 8)) {
Missile_X = PlaneX + 5;
Missile_Y = PlaneY + 16;
if (bFlagMissileTest == true) {
bFlagMissileState = false;
bFlagMissileDisplay = true;
Missile_X += KingCanvas.SCREEN_WIDTH;
Missile_Y += KingCanvas.SCREEN_HEIGHT;
bFlagMissileTest = false;
}
KC.BulletsPlantState = 2;
KC.bFlagLeadingPlaneHPchangeDisplay = true;
}
}
}
}
}
/**
* 移动中型飞机状态处理方法
*/
public void MovePlaneState() {
if (PlaneX + PlaneWidth >> 1 > KC.LeadingPlane_X + 24) {
PlaneState = 1;
} else {
PlaneState = 0;
if (PlaneX + PlaneWidth >> 1 <= KC.LeadingPlane_X) {
PlaneState = 2;
}
}
}
/**
* 中型飞机爆炸掉落物品移动处理方法
*/
public void MovePlaneArticle() {
if (bFlagPlaneArticleDisplay == true) {
PlaneArticle_Y++;
}
}
/**
* 中型飞机爆炸掉落物品处理方法
*/
public void PlaneArticle() {
switch (PlaneArticleNumber) {
case 0:
KC.bFlagLeadingPlaneHPfill = true;
break;
case 1:
KC.BombCounter++;
break;
case 2:
KC.BulletsPower();
break;
}
}
/**
* 中型飞机爆炸掉落物品状态处理方法
*/
public void DeterminePlaneArticleState() {
if (KC.isRam(PlaneArticle_X, PlaneArticle_Y, PlaneArticle.getWidth(),
PlaneArticle.getHeight() / 3, KC.LeadingPlane_X + 4,
KC.LeadingPlane_Y + 4,
KingCanvas.imageLeadingPlane.getWidth() - 8,
(KingCanvas.imageLeadingPlane.getHeight() / 3) - 8)) {
PlaneArticle_X += KingCanvas.SCREEN_WIDTH;
PlaneArticle_Y += KingCanvas.SCREEN_HEIGHT;
KC.bFlagSbombDouble = false;
PlaneArticle();
if (PlaneArticleNumber < 2) {
PlaneArticleNumber++;
} else {
PlaneArticleNumber = 0;
}
bFlagPlaneArticleDisplay = false;
}
}
/**
* 中型飞机受损减血处理方法
*/
public void procBeHurt() {
if (PlaneHP > 0) {
switch (KingCanvas.LeadingPlaneType) {
case 0:
switch (KC.BulletsPowerCounter) {
case 0:
PlaneHP -= 5;
break;
case 1:
PlaneHP -= 7;
break;
case 2:
PlaneHP -= 9;
break;
}
break;
case 1:
switch (KC.BulletsPowerCounter) {
case 0:
PlaneHP--;
break;
case 1:
PlaneHP -= 3;
break;
case 2:
PlaneHP -= 5;
break;
}
break;
case 2:
switch (KC.BulletsPowerCounter) {
case 0:
PlaneHP -= 2;
break;
case 1:
PlaneHP -= 4;
break;
case 2:
PlaneHP -= 6;
break;
}
break;
}
} else {
Explosion_X = PlaneX + 6;
Explosion_Y = PlaneY + 1;
isMusic = true;
MusicTest = 0;
PlaneArticle_X = Explosion_X + 8;
PlaneArticle_Y = Explosion_Y + 4;
bFlagPlaneArticleDisplay = false;
bFlagOtherPlaneHP = true;
}
}
// -------------------------------------------- 画笔
/**
* 中型飞机画笔
*/
public void drawOtherPlane(Graphics g) {
KingCanvas.Brush(g, Plane, PlaneX, PlaneY, PlaneWidth, PlaneHeight, 0,
0);
}
/**
* 中型飞机爆炸画笔
*/
public void drawOtherPlaneExplosion(Graphics g) {
KingCanvas.Brush(g, PlaneExplosion, Explosion_X, Explosion_Y,
PlaneExplosion.getWidth(), PlaneExplosion.getWidth(),
ExplosionNumber, 0);
}
/**
* 中型飞机爆炸掉落的物品画笔
*/
public void drawOtherPlaneArticle(Graphics g) {
KingCanvas.Brush(g, PlaneArticle, PlaneArticle_X, PlaneArticle_Y,
PlaneArticle.getWidth(), PlaneArticle.getHeight() / 3,
PlaneArticleNumber, 0);
}
/**
* 中型飞机发射的导弹画笔
*/
public void drawMissile(Graphics g) {
KingCanvas.Brush(g, Missile, Missile_X, Missile_Y, Missile.getWidth(),
Missile.getHeight(), 0, 0);
}
/**
* 移动中型飞机被打掉显示分数处理方法
*/
public void OtherPlanefraction(Graphics g) {
g.setColor(ColorCounter, ColorCounter, ColorCounter);
if (ColorCounter <= 240) {
ColorCounter += 15;
} else {
ColorCounter = 0;
}
if (bFlagOtherPlaneHP == true || ExplosionNumber > 7) {
g.drawString("100", Explosion_X, Explosion_Y - 15 - fraction,
Graphics.TOP | Graphics.LEFT);
fraction++;
} else {
fraction = 0;
}
}
// -------------------------------------------------
/**
* 中型飞机相关处理方法
*/
public void OtherPlanePacket() {
MoveOtherPlane();
MoveMissile();
MovePlaneArticle();
DeterminePlaneArticleState();
// bFlagMusic();
}
/**
* 中型飞机相关画笔
*/
public void drawEnemyOtherPlane(Graphics g) {
OtherPlanefraction(g);
if (bFlagOtherPlaneHP == false) {
drawOtherPlane(g);
} else {
drawOtherPlaneExplosion(g);
bFlagPlaneArticleDisplay = true;
if (ExplosionNumber < 5) {
ExplosionNumber++;
} else {
isMusic = false;
ExplosionNumber = 0;
bFlagOtherPlaneHP = false;
}
}
if (bFlagPlaneArticleDisplay == true)
drawOtherPlaneArticle(g);
if (bFlagMissileDisplay == false)
drawMissile(g);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -