1. 程式人生 > >飛機大戰遊戲(java實現)

飛機大戰遊戲(java實現)

做了一個飛機大戰的小遊戲,現在把這個思路總結以及程式碼分享出來。希望通過幾篇部落格後能讓看到的人都可以實現自己飛機大戰的遊戲。
開發環境:jdk1.7
開發工具:eclipese

再來介紹一下游戲的規則。
飛機大戰的物體有:
用自己滑鼠控制的英雄機
英雄機圖片
被英雄機打的敵機和蜜蜂
敵機
蜜蜂
英雄機射出來的子彈
子彈
英雄機射中敵機得40分。射中蜜蜂會有獎勵:獎勵分為獎勵一條命和雙倍火力值+40。當英雄機的雙倍火力值大於0時,會發射兩顆子彈同時火力值-2。
英雄機開始有三條命,當英雄機與敵機或小蜜蜂碰撞時,命-1。當命<=0時,遊戲結束。
開始時介面為:
開始介面
當滑鼠左鍵點選後遊戲開始執行
用滑鼠控制英雄機,當滑鼠移開視窗後,遊戲暫停,滑鼠再移回後遊戲繼續。
子彈和敵機直線飛行,蜜蜂左右飛行

根據遊戲規則,可以很輕易的總結出四個類。
分別有hero(英雄機類),Airplane(敵機類),Bee(蜜蜂類),Bullet(子彈類)

hero類中存在的屬性:圖片,圖片的寬和高,圖片位置座標(x和y),命,活力值,得分。
Airplane:圖片,圖片的寬和高,圖片位置座標(x,y),每次移動y的距離
Bee:圖片,圖片的寬和高,圖片位置座標(x,y),每次移動x,y的距離
Bullet:圖片,圖片的寬和高,圖片位置座標(x,y),每次移動y的距離
根據上面抽象出來的四個類的屬性,可以明顯發現它們的屬性有大部分的重疊。那麼可以再根據上面的四個類再抽象出一個父類出來
父類FlyObject(飛行物):圖片,圖片的寬和高,圖片位置座標(x,y)和行為move(移動),因為move在每個子類中的行為不固定,所以必須寫成抽象方法,有抽象方法這個父類必須為抽象類
根據遊戲規則,打掉蜜蜂會有獎勵,打掉敵機會得分
再抽象出兩個介面:Enemy(敵人介面),Award(獎勵介面)

程式碼實現:
FlyObject:

import java.awt.image.BufferedImage;

public abstract class FlyObject {
    //因為是父類,為了讓子類可以看見使用protected修飾
    protected BufferedImage image;
    protected int height;
    protected int witch;
    protected int x;
    protected int y;
    public abstract void move();
}

Enemy:

//敵人介面
public interface Enemy { int SCOER=40;//被射中得40分 public int getSCoer(); }

Award:

//獎勵介面
public interface Award {
    int LIFE_AWAED=0;
    int DOUBLEFIRE_AWARD=1;
    int getAwardType();
}

hero:

import java.awt.image.BufferedImage;

//英雄機
public class Hero extends FlyObject {
    int doubleFire;
    int life;
    int score;
    BufferedImage images[];
    int index=0;

    public void move() {//用兩張英雄機圖片切換實現畫面上的英雄機的移動
        index++;
        image=images[index/images.length];
    }
}

Airplane:

public class Airplane extends FlyObject implements Enemy{
    int yMove=4;
    public int getSCoer() {
        return SCOER;
    }


    public void move() {
        y+=yMove;
    }
}

Bee:

//蜜蜂類
public class Bee extends FlyObject implements Award{
    int awardType;//獎勵型別
    int xMove=3;
    int yMove=4;
    public int getAwardType() {
        return awardType;
    }

    public void move() {
        x+=xMove;
        y+=yMove;
    }
}

Bullet:

public class Bullet extends FlyObject  {
    int yMove=4;

    public void move() {
        y+=yMove;
    }

}