⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 otherplane.java

📁 一个J2ME的游戏,有源程序.是原创!适合S60的176*208的规格.
💻 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 + -