资源简介
package cn.feike.shoot;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
public abstract class FlyingObject {
protected double x;//物体的x坐标
protected double y;//物体的y坐标
protected double width;//物体的宽
protected double heigth;//物体的高
protected BufferedImage image;//当前正在显示的图片
protected int index = 0;//图片数组下标序号,子类中使用
protected double step;//飞行物每次(1/24秒)移动的距离
protected int life;//命
protected int state;//飞行物的状态
public static final int ACTIVE=0;//活着状态
public static final int DEAD=1;//死亡状态
public static final int REMOVE=2;//回收状态
//默认构造器
public FlyingObject() {
life = 1;
state = ACTIVE;
}
//有参构造器
public FlyingObject(double width,double heigth){
this();//调用无参数的构造器,必须写在第一行.
this.x = (int)(Math.random()*(480-width));
this.y = -heigth;
this.width = width;
this.heigth = heigth;
step = Math.random()*3+0.8;//初始化step为[0.8,3.8)之间的数
}
//重写toString方法
public String toString() {
return x+","+y+","+width+","+heigth+","+image;
}
//重写paint,方便子类对象的使用
public void paint(Graphics g) {
g.drawImage(image, (int)x, (int)y, null);//绘制图片
}
//飞行物移动的move方法
/**
* 重构了move,方法实现播放销毁动画功能
*/
public void move(){
if(state == ACTIVE){
y += step;
return ;
}
if(state == DEAD){
//从子类对象中获取下一张照片
BufferedImage img = nextImage();
if(img == null){
state = REMOVE;//没有照片则回收
}else{
image = img;//否则把子类的图片传给image
}
//越界则销毁
if(y>=825){
state = REMOVE;
}
}
}
/**
* 子类中必须有的方法,返回下一个要播放的照片引用,
* 如果返回null表示没有可播放的照片了.
*/
protected abstract BufferedImage nextImage();
/**
* 飞行物被打了一下
*/
public void hit(){
if(life>0){
life--;
}
if(life==0){
state = DEAD;
}
}
/**
* 碰撞检测的方法
* 检测物体的位置是否在碰撞的范围内.
* (子弹是否在飞行物的碰撞范围内)
*/
public boolean duang(FlyingObject obj){
//this(x,y,w,h)
//obj(x,y,w,h)
double x1 = this.x - obj.width;
double x2 = this.x + this.width;
double y1 = this.y - obj.width;
double y2 = this.y + this.heigth;
return x1<obj.x&&obj;.x<x2&&y1;<obj.y&&obj;.y<y2;
}
/** 重构
代码片段和文件信息
package cn.feike.shoot;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class Airplane extends Flyingobject {
private static BufferedImage[] imgs;// 定义一个唯一的图片素材
// 静态代码块用于获取图片资源
static {
imgs = new BufferedImage[5];
try {
for (int i = 0; i < imgs.length; i++) {
String png = “cn/feike/shoot/airplane“ + i + “.png“;//获取图片路径
imgs[i] = ImageIO.read(Airplane.class.getClassLoader().getResourceAsStream(png));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public Airplane() {
super(49 36);// 初始化小飞机
this.image = imgs[0];
}
/**
* 播放下一张图片
*/
@Override
protected BufferedImage nextImage() {
index++;
if(index >= imgs.length){
return null;//如果下标大于等于数组长度无图可播返回null.
}
return imgs[index];
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 301 2016-07-18 15:02 飞机大战\.classpath
文件 391 2016-07-18 15:02 飞机大战\.project
文件 598 2016-07-18 15:02 飞机大战\.settings\org.eclipse.jdt.core.prefs
文件 1540 2016-07-22 20:38 飞机大战\bin\cn\feike\shoot\Airplane.class
文件 3575 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\airplane0.png
文件 2619 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\airplane1.png
文件 2954 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\airplane2.png
文件 4047 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\airplane3.png
文件 1439 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\airplane4.png
文件 242 2016-07-22 20:38 飞机大战\bin\cn\feike\shoot\Award.class
文件 26709 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\background.png
文件 1969 2016-07-22 20:38 飞机大战\bin\cn\feike\shoot\Bee.class
文件 6405 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bee0.png
文件 6416 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bee1.png
文件 6428 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bee2.png
文件 6404 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bee3.png
文件 6367 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bee4.png
文件 1566 2016-07-22 20:38 飞机大战\bin\cn\feike\shoot\BigPlane.class
文件 6762 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bigplane0.png
文件 7932 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bigplane1.png
文件 8682 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bigplane2.png
文件 9831 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bigplane3.png
文件 2672 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bigplane4.png
文件 700 2016-07-22 20:38 飞机大战\bin\cn\feike\shoot\BigPlaneAward.class
文件 1464 2016-07-22 20:38 飞机大战\bin\cn\feike\shoot\Bullet.class
文件 408 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\bullet.png
文件 131 2016-07-22 20:38 飞机大战\bin\cn\feike\shoot\Enemy.class
文件 2772 2016-07-22 20:38 飞机大战\bin\cn\feike\shoot\Flyingob
文件 20220 2016-07-19 09:58 飞机大战\bin\cn\feike\shoot\gameover.png
文件 2455 2016-07-22 20:38 飞机大战\bin\cn\feike\shoot\Hero.class
............此处省略114个文件信息
评论
共有 条评论