java实现飞机大战小游戏——————【附素材、源码、逐行注释讲解】

 

java飞机小游戏,实现了以下功能:

1.我方小飞机可以通过鼠标移动来控制。

2.蜜蜂(必须打死而不是碰到,并且碰到蜜蜂会失去生命值)分为两种奖励 获得生命值或者子弹翻3倍。

3.当鼠标移动到界面外可导致游戏暂停。

4.我方英雄机生命值为3,当撞到敌机时生命值-1,敌机消失,为0时游戏结束。

5.有不同类型大小敌机,随机出现。

6.当敌机被子弹打中时,分数+10,当敌机被撞到时生命值-1.

目录

一、项目演示效果

二、项目源码

1、JAVA工程文件

2、Airplane.java

3、Award.java

4、Bee.java

5、BigAirplane.java

6、Bullet.java

7、Enemy.java

8、FlyingObject.java

9、Hero.java

10、ShootGame.java

11、Sky.java

三、图片资料


一、项目演示效果

                 

二、项目源码

1、JAVA工程文件

2、Airplane.java

package TestShootgameDemo;
/**
 * 小敌机类
 * 飞行物、得分
 * @author liujiacheng
 *
 */

import java.awt.image.BufferedImage;

public class Airplane extends FlyingObject implements Enemy{
	//定义小敌机图片集
	public static BufferedImage[] images;
	
	/*使用静态代码块 加载小敌机图片*/
	static {
		images=new BufferedImage[5];
		//循环加载5张图片
		for (int i = 0; i < images.length; i++) {
		images[i]=loadImage("airplane"+i+".png");
		}
	}
	
	//定义当前小敌机特有坐标
	private int speed;
	
	/*构造方法*/
	public Airplane() {
		super(49,36);//调用父类的构造方法 初始化参数
		speed=2;
	}
	
	/*打中得分*/
	@Override
	public int getScore() {
		// TODO Auto-generated method stub
		return 10;
	}

	/*小敌机移动*/
	@Override
	public void step() {
		// TODO Auto-generated method stub
		y+=speed;
		
	}
	//定义小敌机死了的下标
	int deadIndex=1;
	/*获得小敌机图片---爆炸效果*/
	@Override
	public BufferedImage getImage() {
		// TODO Auto-generated method stub
		//判断小敌机是否活着
		if (isLife()) {
			return images[0];
		}else if (isDead()) {//判断是否死了
			//从第二张图片进行切换
			BufferedImage img=images[deadIndex++];
			//判断是否切换到最后一张图片
			if (deadIndex==images.length) {
				//移出飞行物
				state=REMOVE;
			}
			return img;
		}
		return null;
	}
	/*小敌机是否越界*/
	@Override
	public boolean outOfBounds() {
		// TODO Auto-generated method stub
		return this.y>=ShootGame.jframeHeight ;
	}
}

3、Award.java

package TestShootgameDemo;
/**
 * 打中蜜蜂后的奖励接口
 * 定义双倍火力或者生命值的奖励类型为0或1
 * -目的是为了随机产生数字0或1来确定奖励类型
 * @author liujiacheng
 *
 */
public interface Award {
	//定义奖励类型
	public int DOUBLE_FIRE=0;//双倍火力
	public int LIFE=1;//生命值
	
	/*获取奖励类型的方法*/
	public int getAward();
}

4、Bee.java

package TestShootgameDemo;
/**
 * 蜜蜂类
 * 	飞行物 奖励
 * @author liujiacheng
 *
 */

import java.awt.image.BufferedImage;
import java.util.Random;

public class Bee extends FlyingObject implements Award {
	/*定义图片集*/
	private static BufferedImage[] images;
	/*静态代码块*/
	static {
		images = new BufferedImage[5];
		for (int i = 0; i < images.length; i++) {
			images[i]=loadImage("bee"+i+".png");
		}
	}
	private int xSpeed;//x坐标增量
	private int ySpeed;//y坐标增量
	private int awardType;//奖励类型(0/1)
	
	/*构造方法*/
	public Bee() {
		super(60,50);
		xSpeed=1;
		ySpeed=2;
		
		Random rand=new Random();
		awardType =rand.nextInt(2);//0/1
		}

	/*获取奖励*/
	@Override
	public int getAward() {
		// TODO Auto-generated method stub
		return awardType;
	}

	/*小蜜蜂的移动*/
	@Override
	public void step() {	
		x+=xSpeed;
		y+=ySpeed;
		//判断是否碰撞左右边界
		if(x<=0||x>=ShootGame.jframeWidth-this.width) {
			xSpeed*=-1;//改变方向
		}
		
	}
	//定义死了的下标
	int deadIndex=1;
	//获取当前图片--爆炸
	@Override
	public BufferedImage getImage() {
		// TODO Auto-generated method stub
		if(isLife()) {
			return images[0];
		}else if (isDead()) {
			Bu
  • 18
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值