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

📄 planestart.java

📁 《小猪漫天飞》是一款飞行射击游戏
💻 JAVA
字号:

import java.io.IOException;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.*;

public class PlaneStart extends Canvas {

	Image imgBack, imgPlane1, imgBullet, imgPlaneLeft1, imgPlaneRight1,
			imgPlane2, imgPlaneLeft2, imgPlaneRight2, imgFire1, imgFire2,
			imgFire3, imgEnemy1, imgEnemy2, imgEnemy3, imgEnemy4, imgEnemy5,
			imgBomb1, imgBomb2, imgLife, FireAction;

	Random r = new Random();

	PlaneMove PM = new PlaneMove();

	DrawEnemy DE = new DrawEnemy();

	int ChooseAction;//选择飞机

	int LifeAction = 3;//飞机生命

	Timer time = new Timer();

	int BackMoveY = -540;//背景移动

	int PlaneMoveAction = 2;//飞机移动状态

	int MovePlaneX = 80, MovePlaneY = 130, MoveBulletX = 80, MoveBulletY = 100;//飞机和子弹初始坐标

	int EnemyX1, EnemyX2, EnemyX3, EnemyX4, EnemyX5, EnemyY = 0, EnemyY1,
			EnemyY2, EnemyY3, EnemyY4, EnemyY5;

	int SpeedY = 1;//飞机移动速度

	int BombX = 0, BombY = 0;

	int Num = 0;

	//调用线程
	public PlaneStart() {
		RamCreat();
		time.schedule(PM, 10, 100);
		time.schedule(DE, 0, 50);
	}

	public void paint(Graphics g) {

		g.setColor(255, 255, 255);
		g.fillRect(0, 0, getWidth(), getHeight());
		g.drawImage(imgBack, 0, BackMoveY, 0);
		DrawLife(g);
		if ((EnemyY == 0) || (EnemyY == 180)) {
			RamCreat();
		}
		DrawEnemy(g);
		Bullet(g);
		HitTest(g);
		g.setColor(0, 0, 0);
		g.drawString("得分:" + String.valueOf(Num), 130, 0, 0);
		if (ChooseAction == 1) {
			Plane1(g);
			Fire(g);
		}
		if (ChooseAction == 2) {
			Plane2(g);
			Fire(g);
		}
	}

	//调图片
	public void LoadImg() {
		try {
			imgBack = Image.createImage("/Back.png");
			imgPlane1 = Image.createImage("/Plane1.png");
			imgPlaneLeft1 = Image.createImage("/PlaneLeft1.png");
			imgPlaneRight1 = Image.createImage("/PlaneRight1.png");
			imgPlane2 = Image.createImage("/Plane2.png");
			imgPlaneLeft2 = Image.createImage("/PlaneLeft2.png");
			imgPlaneRight2 = Image.createImage("/PlaneRight2.png");
			imgBullet = Image.createImage("/Bullet.png");
			imgFire1 = Image.createImage("/Fire1.png");
			imgFire2 = Image.createImage("/Fire2.png");
			imgFire3 = Image.createImage("/Fire3.png");
			imgEnemy1 = Image.createImage("/Enemy1.png");
			imgEnemy2 = Image.createImage("/Enemy2.png");
			imgEnemy3 = Image.createImage("/Enemy3.png");
			imgEnemy4 = Image.createImage("/Enemy4.png");
			imgEnemy5 = Image.createImage("/Enemy5.png");
			imgBomb1 = Image.createImage("/Bomb1.png");
			imgBomb2 = Image.createImage("/Bomb2.png");
			imgLife = Image.createImage("/Life.png");
		} catch (IOException e) {
		}
	}

	//画左上角飞机生命
	public void DrawLife(Graphics g) {
		if ((LifeAction == 3) || (LifeAction == 2) || (LifeAction == 1)) {
			g.drawImage(imgLife, 5, 5, 0);
		}
		if ((LifeAction == 3) || (LifeAction == 2)) {
			g.drawImage(imgLife, 13, 5, 0);
		}
		if (LifeAction == 3) {
			g.drawImage(imgLife, 21, 5, 0);
		}
	}

	//创建随机数
	public void RamCreat() {
		int EnemyRam1 = (r.nextInt() >>> 1) % 15;
		EnemyX1 = EnemyRam1;
		int EnemyRam2 = (r.nextInt() >>> 1) % 40 + 35;
		EnemyX2 = EnemyRam2;
		int EnemyRam3 = (r.nextInt() >>> 1) % 50 + 45;
		EnemyX3 = EnemyRam3;
		int EnemyRam4 = (r.nextInt() >>> 1) % 80 + 75;
		EnemyX4 = EnemyRam4;
		int EnemyRam5 = (r.nextInt() >>> 1) % 100 + 95;
		EnemyX5 = EnemyRam5;
		int EnemyYRam1 = (r.nextInt() >>> 1) % 30;
		EnemyY1 = EnemyYRam1;
		int EnemyYRam2 = (r.nextInt() >>> 1) % 30;
		EnemyY2 = EnemyYRam2;
		int EnemyYRam3 = (r.nextInt() >>> 1) % 30;
		EnemyY3 = EnemyYRam3;
		int EnemyYRam4 = (r.nextInt() >>> 1) % 30;
		EnemyY = EnemyYRam4;
		int EnemyYRam5 = (r.nextInt() >>> 1) % 30;
		EnemyY5 = EnemyYRam5;
	}

	//画爆炸效果
	public void DrawBomb(Graphics g) {
		for (int i = 1; i < 500; i++) {
			g.drawImage(imgBomb1, BombX, BombY, 0);
			g.drawImage(imgBomb2, BombX, BombY, 0);
		}
	}

	//画敌机
	public void DrawEnemy(Graphics g) {
		g.drawImage(imgEnemy1, EnemyX1, EnemyY + EnemyY1, 0);
		g.drawImage(imgEnemy2, EnemyX2, EnemyY + EnemyY2, 0);
		g.drawImage(imgEnemy3, EnemyX3, EnemyY + EnemyY3, 0);
		g.drawImage(imgEnemy4, EnemyX4, EnemyY + EnemyY4, 0);
		g.drawImage(imgEnemy5, EnemyX5, EnemyY + EnemyY5, 0);
	}

	//画飞机尾气
	public void Fire(Graphics g) {
		g.drawImage(FireAction, MovePlaneX, MovePlaneY + 30, 0);
	}

	//第一类飞机
	public void Plane1(Graphics g) {
		if (PlaneMoveAction == 0) {
			g.drawImage(imgPlaneLeft1, MovePlaneX, MovePlaneY, 0);
		}
		if (PlaneMoveAction == 1) {
			g.drawImage(imgPlaneRight1, MovePlaneX, MovePlaneY, 0);
		}
		if (PlaneMoveAction == 2) {
			g.drawImage(imgPlane1, MovePlaneX, MovePlaneY, 0);
		}
		if (PlaneMoveAction == 3) {
			g.drawImage(imgPlane1, MovePlaneX, MovePlaneY, 0);
		}
		if (PlaneMoveAction == 4) {
			g.drawImage(imgPlane1, MovePlaneX, MovePlaneY, 0);
		}
	}

	//第二类飞机
	public void Plane2(Graphics g) {
		if (PlaneMoveAction == 0) {
			g.drawImage(imgPlaneLeft2, MovePlaneX, MovePlaneY, 0);
		}
		if (PlaneMoveAction == 1) {
			g.drawImage(imgPlaneRight2, MovePlaneX, MovePlaneY, 0);
		}
		if (PlaneMoveAction == 2) {
			g.drawImage(imgPlane2, MovePlaneX, MovePlaneY, 0);
		}
		if (PlaneMoveAction == 3) {
			g.drawImage(imgPlane2, MovePlaneX, MovePlaneY, 0);
		}
		if (PlaneMoveAction == 4) {
			g.drawImage(imgPlane2, MovePlaneX, MovePlaneY, 0);
		}
	}

	//画子弹
	public void Bullet(Graphics g) {
		MoveBulletX = MovePlaneX;
		if (MoveBulletY < 0) {
			MoveBulletY = MovePlaneY;
		}
		for (int i = 0; i < 2; i++) {
			MoveBulletY = MoveBulletY - 1;
			g.drawImage(imgBullet, MoveBulletX, MoveBulletY, 0);
		}
		repaint();
	}

	//碰撞检测
	public void HitTest(Graphics g) {
		if (MoveBulletX < (EnemyX1 + 20) && MoveBulletX > EnemyX1) {
			if (MoveBulletY < (EnemyY + EnemyY1 + 20)
					&& MoveBulletY > (EnemyY + EnemyY1)) {
				BombX = MoveBulletX;
				BombY = MoveBulletY;
				EnemyX1 = -100;
				DrawBomb(g);
				Num++;
			}
		}
		if (MoveBulletX < (EnemyX2 + 20) && MoveBulletX > EnemyX1) {
			if (MoveBulletY < (EnemyY + EnemyY2 + 20)
					&& MoveBulletY > (EnemyY + EnemyY2)) {
				BombX = MoveBulletX;
				BombY = MoveBulletY;
				EnemyX2 = -100;
				DrawBomb(g);
				Num++;
			}
		}
		if (MoveBulletX < (EnemyX3 + 20) && MoveBulletX > EnemyX3) {
			if (MoveBulletY < (EnemyY + EnemyY3 + 20)
					&& MoveBulletY > (EnemyY + EnemyY3)) {
				BombX = MoveBulletX;
				BombY = MoveBulletY;
				EnemyX3 = -100;
				DrawBomb(g);
				Num++;
			}
		}
		if (MoveBulletX < (EnemyX4 + 20) && MoveBulletX > EnemyX4) {
			if (MoveBulletY < (EnemyY + EnemyY4 + 20)
					&& MoveBulletY > (EnemyY + EnemyY4)) {
				BombX = MoveBulletX;
				BombY = MoveBulletY;
				EnemyX4 = -100;
				DrawBomb(g);
				Num++;
			}
		}
		if (MoveBulletX < (EnemyX5 + 20) && MoveBulletX > EnemyX5) {
			if (MoveBulletY < (EnemyY + EnemyY5 + 20)
					&& MoveBulletY > (EnemyY + EnemyY5)) {
				BombX = MoveBulletX;
				BombY = MoveBulletY;
				EnemyX5 = -100;
				DrawBomb(g);
				Num++;
			}
		}
		if (MovePlaneX < (EnemyX1 + 20) && MovePlaneX > EnemyX1) {
			if (MovePlaneY < (EnemyY + EnemyY1 + 20)
					&& MovePlaneY > (EnemyY + EnemyY1)) {
				LifeAction--;
				repaint();
			}
		}
		if (MovePlaneX < (EnemyX2 + 20) && MovePlaneX > EnemyX2) {
			if (MovePlaneY < (EnemyY + EnemyY2 + 20)
					&& MovePlaneY > (EnemyY + EnemyY2)) {
				LifeAction--;
				repaint();
			}
		}
		if (MovePlaneX < (EnemyX3 + 20) && MovePlaneX > EnemyX3) {
			if (MovePlaneY < (EnemyY + EnemyY3 + 20)
					&& MovePlaneY > (EnemyY + EnemyY3)) {
				LifeAction--;
				repaint();
			}
		}
		if (MovePlaneX < (EnemyX4 + 20) && MovePlaneX > EnemyX4) {
			if (MovePlaneY < (EnemyY + EnemyY4 + 20)
					&& MovePlaneY > (EnemyY + EnemyY4)) {
				LifeAction--;
				repaint();
			}
		}
		if (MovePlaneX < (EnemyX5 + 20) && MovePlaneX > EnemyX5) {
			if (MovePlaneY < (EnemyY + EnemyY5 + 20)
					&& MovePlaneY > (EnemyY + EnemyY5)) {
				LifeAction--;
				repaint();
			}
		}

	}

	//控制飞机前后左右移动
	public void keyPressed(int KeyCode) {
		if ((KeyCode == getKeyCode(Canvas.LEFT)) || (KeyCode == KEY_NUM4)) {
			PlaneMoveAction = 0;
			FireAction = imgFire1;
		}
		if ((KeyCode == getKeyCode(Canvas.RIGHT)) || (KeyCode == KEY_NUM6)) {
			PlaneMoveAction = 1;
			FireAction = imgFire1;
		}
		if ((KeyCode == getKeyCode(Canvas.UP)) || (KeyCode == KEY_NUM2)) {
			PlaneMoveAction = 3;
			FireAction = imgFire3;
		}
		if ((KeyCode == getKeyCode(Canvas.DOWN)) || (KeyCode == KEY_NUM8)) {
			PlaneMoveAction = 4;
			FireAction = imgFire2;
		}

	}

	//出敌机线程
	class DrawEnemy extends TimerTask {
		public void run() {
			if (Num == 20) {
				SpeedY = 3;
			}
			if (Num == 40) {
				SpeedY = 5;
			}
			if (Num == 60) {
				SpeedY = 7;
			}
			if (Num == 80) {
				SpeedY = 9;
			}
			if (Num == 100) {
				SpeedY = 11;
			}
			if (EnemyY >= 0) {
				EnemyY = EnemyY + SpeedY;
			}
			repaint();
		}
	}

	//控制飞机,背景线程
	class PlaneMove extends TimerTask {
		public void run() {

			if (BackMoveY <= 0) {
				BackMoveY = BackMoveY + 2;
			}
			if (BackMoveY > 0) {
				BackMoveY = -540;
			}
			if (PlaneMoveAction == 0) {
				if (MovePlaneX <= 0) {
					MovePlaneX = 0;
				}
				MovePlaneX = MovePlaneX - 4;
			}
			if (PlaneMoveAction == 1) {
				if (MovePlaneX >= 147) {
					MovePlaneX = 147;
				}
				MovePlaneX = MovePlaneX + 4;
			}
			if (PlaneMoveAction == 3) {
				if (MovePlaneY <= 0) {
					MovePlaneY = 5;
				}
				MovePlaneY = MovePlaneY - 5;
			}
			if (PlaneMoveAction == 4) {
				if (MovePlaneY >= 130) {
					MovePlaneY = 130;
				}
				MovePlaneY = MovePlaneY + 5;
			}
			repaint();
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -