我是靠谱客的博主 单薄小鸭子,最近开发中收集的这篇文章主要介绍java课设-飞机大战一.团队成员及其负责模块二.git提交记录三.项目功能架构图 四.运行截图五.关键代码4.我方飞机跟随鼠标 5.boss的生成及移动 6.敌方子弹的生成 7.我方子弹的生成 六.不足与展望,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一.团队成员及其负责模块

项目成员 负责模块
苏凯昕编码规范,面向对象设计,算法编写,部分GUI,博客编写,游戏数值策划、游戏美术设计

二.git提交记录

三.项目功能架构图

1.流程图

 四.运行截图

 

 

五.关键代码

1.游戏主要流程

public void launch() throws InterruptedException {

		this.setVisible(true);// 窗口是否可见
		this.setSize(640, 960);// 窗口大小
		this.setLocationRelativeTo(null);// 窗口位置
		this.setTitle("飞机大战");// 窗口标题

		GameUtils.gameobjLIst.add(bgObj);
		GameUtils.gameobjLIst.add(myplane);// 先画背景再画飞机,不然会被盖住
//		GameUtils.gameobjLIst.add(boss);

		this.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {// 点击开始游戏
				if (e.getButton() == 1 && state == 0) {// 点击鼠标左键且游戏未开始
					state = 1;
					repaint();// 会调用paint方法

				}
			}
		});

		while (true) {
			if (state == 1) {
				creteObj();// 敌方飞机、子弹和我方子弹
				repaint();
			}

			Thread.sleep(30);
		}
	}

2.绘制图像

public void paint(Graphics g) {
		if (offScreenImage == null) {
			offScreenImage = createImage(640, 960);
		}
		Graphics gImage = offScreenImage.getGraphics();
		gImage.fillRect(0, 0, 640, 960);
		if (state == 0) {// 游戏主页
			gImage.drawImage(GameUtils.bgImg, 0, 0, null);
			gImage.drawImage(GameUtils.bossImg, 320, 0, null);
			gImage.drawImage(GameUtils.boomImg, 0, 320, null);
			gImage.setColor(Color.yellow);
			GameUtils.drawWord(gImage, "点击界面任意位置开始游戏", Color.yellow, 50, 10, 650);
			GameUtils.drawWord(gImage, "飞机大战", Color.yellow, 70, 150, 180);

		}
		if (state == 1) {
			GameUtils.gameobjLIst.addAll(GameUtils.boomLIst);
			for (int i = 0; i < GameUtils.gameobjLIst.size(); i++) {// 绘制所有对象
				GameUtils.gameobjLIst.get(i).paintSelf(gImage);
			}
			GameUtils.drawWord(gImage, "分数:" + score, Color.green, 40, 30, 100);
			GameUtils.gameobjLIst.removeAll(GameUtils.removeLIst);
		}

		if (state == 3) {// 游戏失败
			gImage.drawImage(GameUtils.boomImg, myplane.getX(), myplane.getY(), null);
			GameUtils.drawWord(gImage, "游戏结束", Color.red, 70, 150, 500);
			GameUtils.drawWord(gImage, "分数:" + score, Color.green, 40, 30, 100);
		}

//		if (state == 2) {
//			GameUtils.drawWord(gImage, "游戏胜利", Color.red, 70, 150, 500);
//			GameUtils.drawWord(gImage, "分数:" + score, Color.green, 40, 30, 100);
//		}

		g.drawImage(offScreenImage, 0, 0, null);
		repaintCount++;
	}

3.创建对象

void creteObj() {// 生成敌机、子弹
		if(bossCount<=5) {
			if (repaintCount % (10-bossCount) == 0) {
				GameUtils.shellLIst
						.add(new ShellObj("imgs/涂鸦子弹.png", myplane.getX() + 20, myplane.getY() - 30, 20, 20, 8, this));
				GameUtils.gameobjLIst.add(GameUtils.shellLIst.get(GameUtils.shellLIst.size() - 1));// 每生成一颗子弹就加入到要绘制的集合中
			}
		}
		else{
			if (repaintCount % 5 == 0) {
				GameUtils.shellLIst
						.add(new ShellObj("imgs/涂鸦子弹.png", myplane.getX() + 20, myplane.getY() - 30, 20, 20, 8, this));
				GameUtils.gameobjLIst.add(GameUtils.shellLIst.get(GameUtils.shellLIst.size() - 1));// 每生成一颗子弹就加入到要绘制的集合中
			}
		}
		
		if (repaintCount % (20-bossCount) == 0) {
			GameUtils.EnemyLIst.add(new EnemyObj("imgs/小飞机.png", (int) (Math.random() * 550), 0, 80, 80, 6, this));
			GameUtils.gameobjLIst.add(GameUtils.EnemyLIst.get(GameUtils.EnemyLIst.size() - 1));// 每生成一架小飞机就加入到要绘制的集合中
		}
		if (repaintCount % (20-bossCount) == 0&&boss!=null) {
			GameUtils.enemyShellLIst
					.add(new EnemyShell("imgs/敌方子弹.png", boss.getX()+100 , boss.getY()+200 , 20, 20, 8, this));
			GameUtils.gameobjLIst.add(GameUtils.enemyShellLIst.get(GameUtils.enemyShellLIst.size() - 1));// 每生成一颗子弹就加入到要绘制的集合中
		}
		
		if (boss == null && repaintCount % 200 == 0) {//10架小飞机生成一个boss
			boss = new BossObj("imgs/boss.png", 300, 0, 250, 210, 4, this);
			GameUtils.gameobjLIst.add(boss);
			GameWin.bossCount++;
		}
	}

4.我方飞机跟随鼠标

	public void paintSelf(Graphics gImage) {
		gImage.drawImage(img,x,y,null);
		this.frame.addMouseMotionListener(new MouseAdapter() {
			@Override
			public void mouseMoved(MouseEvent e) {
				super.mouseMoved(e);
				x = e.getX() - 40;
				y = e.getY() - 60;
			}
		
		});
	}

 5.boss的生成及移动

public void paintSelf(Graphics gImage) {
		if (this.getRec().intersects(this.frame.myplane.getRec())) {
			this.frame.state = 3;
		}

		gImage.drawImage(img, x, y, null);
		if (x > 450 || x < 0) {
			speed = -speed;
		}
		x = x + speed;
		for (ShellObj e : GameUtils.shellLIst) {// 子弹碰撞检测
			if (this.getRec().intersects(e.getRec())) {
				life--;
				e.setX(-500);
				e.setY(500);
				GameUtils.removeLIst.add(e);
			}
			if (life <= 0) {
//				 state=4;
				 GameWin.score += 100*GameWin.bossCount;
				 GameUtils.removeLIst.add(this);
				 this.frame.boss=null;
				 
			}
		}
	}

 6.敌方子弹的生成

public void paintSelf(Graphics gImage) {
		gImage.drawImage(img, x, y, null);
		y = y + speed+GameWin.bossCount;
		if (this.getRec().intersects(this.frame.myplane.getRec())) {
			this.frame.state = 3;
		}
		if (y > 960) {
			this.setX(-200);
			this.setY(-300);
			GameUtils.removeLIst.add(this);
		}
		
	}

 7.我方子弹的生成

public void paintSelf(Graphics gImage) {
		gImage.drawImage(img, x, y, null);
		y = y - speed-GameWin.bossCount;
		if (y < 0) {
			this.setX(-200);
			this.setY(-200);
			GameUtils.removeLIst.add(this);
		}
	}

 六.不足与展望

 1.不足

没有随机生成的道具,游戏的可玩性较低。界面的设计十分简陋。

2.展望

完善上述不足。

最后

以上就是单薄小鸭子为你收集整理的java课设-飞机大战一.团队成员及其负责模块二.git提交记录三.项目功能架构图 四.运行截图五.关键代码4.我方飞机跟随鼠标 5.boss的生成及移动 6.敌方子弹的生成 7.我方子弹的生成 六.不足与展望的全部内容,希望文章能够帮你解决java课设-飞机大战一.团队成员及其负责模块二.git提交记录三.项目功能架构图 四.运行截图五.关键代码4.我方飞机跟随鼠标 5.boss的生成及移动 6.敌方子弹的生成 7.我方子弹的生成 六.不足与展望所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部