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. 在不同狀態下,顯示不同的運行情況
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章