1.需求分析
1 新建工程 导入图片,导入的图片在工程目录下 2 新建窗体,窗体大小400,600,新建画布,在画布类中实现三个接口 3 在画布中声明线程,以及在run方法中搭建线程样例代码 4 加载开始图片,声明Image变量,并在静态代码块中加载,在paint方法中画 5 鼠标移动到开始框中的变化 6 在点击的方法中切换背景,重画,开始线程.解决变小手问题.背景图片下滑完以后的处理 7 声明数组存放飞机,在静态代码块中加载飞机图片,在paint方法中使用三目运算切换画飞机,飞机跟随鼠标移动,飞机靠近边框问题 8 右键暂停,声明两方法,一个是控制执行wait方法的方法,一个是唤醒等待的方法的并别改suspend值.在点击的方法中获取鼠标状态来控制两个方法的执行 9 新建子弹类(int bx,by;Image bImg; int bSpeed;),在画布中新建集合存放子弹,在run方法中新建子弹对象并加到集合中,在paint方法中使用for循环从集合中取出对象并执行每一个对象的画的方法,在run方法中使用for执行移动方法10 三个子弹,添加子弹方向,在新建子弹对象时传3个方法标识,在子弹类中添加三个子弹移动的方法,在创建子弹的时候创建三种子弹 11 创建奖励类,在画布类中创建数组存放加载进来的奖励图片,在静态代码块中加载图片,创建存放奖励的集合,在run方法中创建奖励并添加到集合中,在paint方法中画奖励,在run方法中调用奖励移动的方法.12 画血量,在奖励的类中写碰撞,在碰时注意种类区别,各个奖励的实现. 13 敌机的出现和奖励一样 14 敌机和子弹撞击的实现 15 敌机和飞机撞击的实现
2.子弹类
public class Bullet {
int bx,by;//坐标
Image bImg;//图片
int bSpeed;//速度
int bDirection;//方向
boolean exist=true;//是否存在
public Bullet(int bx,int by,Image bImg,int bSpeed,int bDirection) {
super();
this.bx = bx;
this.by = by;
this.bImg = bImg;
this.bSpeed = bSpeed;
this.bDirection = bDirection;
}
//画子弹的方法
public void drawBullet(Graphics g) {
g.drawImage(bImg, bx, by, null);
}
//子弹移动的方法
public void moveBullet0() {
by-=bSpeed;
if (by |