Java实战

1.第一个任务:做6个子类

       Sky:y1;step   step();

       Hero: life; doubleFire;   move(int x,int y){}

       Airplane: step    step();

       BigAirplane: step   step();

       Bee: xstep; ystep;   awardType//0表示带命;1表示带分    step();

       Bullet: step        step();

2.第二个任务:使用构造方法,初始化数据

       1)Sky:无参构造

       2)Hero:无参构造

       3)敌人对象(Airplane,BigAirplane,Bee)无参构造

       4)Bullet:Bullet(int x,int y)

3. 第三个任务:定义FlyingObject(实现代码重用)

       1)定义FlyingObject,定义通用的变量和方法

       2)设计两个构造方法:

             对Airplane,Bee ,BigAirplane对象的初始化方法,在子类中调用

             对Hero,Sky,Bullet对象的初始化方法,在子类中调用

       3)调整成员变量的修饰符

             父类中可以被访问的成员访问修饰符:protected

             子类中的成员不被外界访问修饰符:private

4.第四个任务:画页面

       1)定义World类,继承JPanel

       2)定义窗口,显示窗口

       3)把图片拷贝到工程包下

       4)加载图片

    4.1)天空

//使用ImageIO读取图片
image = ImageIO.read(Sky.class.getResource("background.png"));

    4.2)小敌机                   

//加载图片到数组中
images[i]=ImageIO.read(Airplane.class.getResource("airplane"+i+".png"));

    4.3)大敌机                 

 //加载图片到数组中
 private static BufferedImage[] images = new BufferedImage[5];

 for(int i = 0;i<images.length;i++){                      
     images[i]=ImageIO.read(Airplane.class.getResource("bigplane"+i+".png"));
 }

     4.4)获取图片

      //要将父类抽象且方法抽象(父类中声明)才可以实现

      public abstract BufferedImage getImage();

      //子类中具体实现

     1)天空

     2)小敌机

      /*

        * 1、如果当前状态为活着,加载数组的第一张图片

        * 2、如果当前状态为死亡,加载数组中剩余的四张图片,把state=REMOVE

        */

      3)大敌机

       /*

        * 1、如果当前状态为活着,加载数组的第一张图片

        * 2、如果当前状态为死亡,加载数组中剩余的四张图片,把state=REMOVE

        */

       4)蜜蜂

         /*

        * 1、如果当前状态为活着,加载数组的第一张图片

        * 2、如果当前状态为死亡,加载数组中剩余的四张图片,把state=REMOVE

        */

       5)子弹

        /*

        * 1、如果当前状态为活着,加载数组的第一张图片

        * 2、如果当前状态为死亡,把state=REMOVE

        */

     4.5)画图片

     在World类中画图片

    //敌人入场

    //小敌机的初始化

    //实现画的功能

5.第五个任务:让画面动起来

    5.1)动起来

    5.2)在world中定义方法stepAction()    在run方法中调用 

    5.3)随机产生敌人对象

       //控制生成敌人数量

       //敌人入场

       //控制生成子弹数量

     5.4)把随机对象放到数组中

     5.5)子弹的产生       

     5.6)英雄机随鼠标移动

          1)//x,y表示鼠标的座标   move(int x,int y)

          2)添加事件监视器   (World类中)

              //定义鼠标的移动事件处理方法(内部类:(匿名类))

              //给Jpanel添加事件监视器的对象

6.第六个任务:删除越界的对象

      6.1)在父类定义越界的方法,分别在子类中实现方法outOfBounds();

          1)分别实现方法(敌人对象y>700,子弹y<0,天空和英雄机永不越界)

          2)在world类中定义方法,回收越界对象,在action方法中调用

7.第七个任务:定义敌人和子弹(英雄机)发生碰撞的方法

  1.  

 

   7.1)定义方法,对敌人和子弹(英雄机)是否碰撞,other表示子弹(英雄机) this表示敌人对象hit(FlyingObject other) 

            如果子弹的x,y座标在以上范围内,说明撞上了,返回true,否则返回false        

   7.2)定义接口,定义得分的方法     需要大敌机和小敌机实现接口,重写方法getScore()

   7.3)定义接口,定义福利 Award {}

   7.4)定义功能方法

          //让敌人去死的方法(在FlyingObject类中实现)goDead()

          //加命(在Hero类中实现)addLife()

          //获取命(在Hero类中实现)getLife()

          //增加火力值(在Hero类中实现)addDoubleFire()

8.第八个任务:当子弹和敌人碰撞之后的得分和福利的设置,并在页面画分和命

       //子弹和敌人发生碰撞

       //遍历子弹集合,

       //拿到一个子弹对象

       //遍历敌人集合

       //获取一个敌人对象

       //子弹对象和所有的敌人碰撞的匹配

       //实现相对应功能

9.第九个任务:英雄机和敌人发生碰撞:如果碰到的是大(小)敌机,命-1;

                         如果碰到的是小蜜蜂:火力清0

(1)在Hero类中定义方法:subLife();    clearFire();

(2)heroHitAction(); //英雄机和敌人碰撞

10.第10个任务:画窗口的状态

  1. 在World类中定义4个常量,表示窗口的状态:开始,运行,暂停,结束
  2. 设计程序结束的方法,checkGameOverAction();
  3. 在World类中定义3个静态变量,加载图片(启动,暂停,结束)
  4. 在World类中的paint()方法中根据不同的状态画不同的的图片
  5. 在不同状态下,显示不同的运行情况
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章