java飞机小游戏,实现了以下功能:
1.我方小飞机可以通过鼠标移动来控制。
2.蜜蜂(必须打死而不是碰到,并且碰到蜜蜂会失去生命值)分为两种奖励 获得生命值或者子弹翻3倍。
3.当鼠标移动到界面外可导致游戏暂停。
4.我方英雄机生命值为3,当撞到敌机时生命值-1,敌机消失,为0时游戏结束。
5.有不同类型大小敌机,随机出现。
6.当敌机被子弹打中时,分数+10,当敌机被撞到时生命值-1.
目录
一、项目演示效果
二、项目源码
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