此喫雞非彼喫雞

來啦,來啦,你們的小白白來了,他帶着超級簡單的喫雞

此喫雞非彼喫雞,你們以爲是這個喫雞嗎?,oh,不不不,雖然在疫情期間,我已經很久沒有喫過雞腿,但是,我們說的喫雞不是這個,而是這個,沒錯就是這個,很火爆的遊戲,它別稱喫雞,它全名有刺激戰場,荒野求生,和平精英等等。

來,我們看看簡單的類有哪些

玩家 Player
    姓名 String name
    血量 int blood
    槍械 Gun gun
    持槍 void holdGun(Gun gun)
    開槍 void shootEnemy(Player enemy)
        如果沒槍械則提示
    裝彈夾 void loadClip(Clip clip)
    受傷 void damage(int hurt)
        如果爲0則提示
    顯示信息 void showPlayer()

槍械 Gun
    彈夾 Clip clip
    裝彈夾 void loadClip(Clip clip)
    開槍 void shootEnemy(Player enemy)
        如果沒有彈夾則提示
        如果沒有子彈則提示
    顯示信息 void showGun()

彈夾 Clip
    容量 int capacity
    餘量 int surplus
    彈倉 Bullet[] magazine
    裝子彈 void pushBullet(Bullet bullet)
        如果已滿則提示
    卸子彈 Bullet popBullet()
        如果已空則提示 並返回null
    顯示信息 void showClip()

子彈 Bullet
    傷害值 hurt
    擊中 void hitEnemy(Player enemy)

來來來,咋們分析一波,首先,咋們得先有四個類,來逐個分析這四個類,爲了簡單一點,咋們就從下往上進行分析吧

首先是子彈類,Bullet

咋們需要定義的是,每一顆子彈對敵人的傷害,咋們總不能是對自己吧,難不成咋們打敵人,還沒有打到敵人呢,自己就死了,傷敵一千自損八百也不是這樣的啊!

//子彈類
class Bullet{
    private int hurt=10;
    public Bullet(){}
    public Bullet(int hurt){
        this.hurt=hurt;
    }
    public void hitEnemy(Player enemy){
        enemy.damage(hurt);
    }
}

子彈的家是哪裏?是彈夾啊,所以,咋們接下來看的是彈夾類Clip

彈夾是幹什麼?彈夾是子彈的家,所以,我們需要規定彈夾的容量

規定了彈夾的容量之後,我們需要當我們打出一發子彈之後,少一個子彈,當彈夾沒有子彈之後,我們需要對其進行補充,但是,我們補充子彈的個數,不能超過彈夾的容量

//彈夾類
class Clip{
    private Bullet[] magazine;
    private int capacity=30;
    private int surplus;
    public Clip(){
        this(30);
    }
    public Clip(int capacity){
        this.magazine=new Bullet[capacity];
        this.surplus=0;
        showClip();
    }
    public void pushBullet(Bullet bullet){
        if(surplus==capacity){
            System.out.println(">>>彈夾已滿,請勿重複裝彈!");
            return;
        }
        magazine[surplus]=bullet;
        surplus++;
        showClip();
    }
    public Bullet popBullet(){
        if(surplus==0){
            System.out.println(">>>彈夾已空,無法彈出子彈!");
            return null;
        }
        Bullet bullet=magazine[surplus-1];
        magazine[surplus-1]=null;
        surplus--;
        showClip();
        return bullet;
    }
    public void showClip(){
        System.out.printf(">>>彈夾狀態:%d/%d\n",surplus,capacity);
    }
}

既然,彈夾已經裝滿,我們就要讓他有用武之地,所以,我們需要將彈夾裝入手槍中

所以,我們要說的類是Gun槍類

一個槍,我們需要知道,他裏面有沒有彈夾,沒有彈夾,你就是在對着空氣打,多尷尬啊

//槍類
class Gun{
    private Clip clip;
    public Gun(){
        this(null);
    }
    public Gun(Clip clip){
        this.clip=clip;
        showGun();
    }
    public void loadClip(Clip clip){
        this.clip=clip;
        showGun();
    }
    public void shootEnemy(Player enemy){
        if(clip==null){
            System.out.println(">>>槍械沒有彈夾,放了一個空槍!");
            return;
        }
        Bullet bullet=clip.popBullet();
        if(bullet==null){
            System.out.println(">>>槍械的彈夾已空,放了一個空槍!");
            return;
        }
        bullet.hitEnemy(enemy);
    }
    public void showGun(){
        if(clip!=null){
            System.out.println(">>>槍械信息:有彈夾");
        }else{
            System.out.println(">>>槍械信息:無彈夾");
        }
    }
}

有槍之後,我們就應該拿起我們的槍,用它來攻擊我們的敵人

所以,我們要說的類就是Player玩家類

這個玩家除了你自己,肯定得有敵人對吧,不然,你整局一個人,對着空氣,不寂寞,不詭異嗎?萬一你一掉頭,出現一個……

這個敵人,他有他固定的血量,當你拿槍殺掉敵人之後,你還要繼續殘忍的鞭打屍體嗎?好過分,還有就是,你每一次打完一槍之後,剩餘的血量是多少,你得知道,你也得知道,你手中有沒有槍

//玩家類
class Player{
    private String name;
    private int blood=100;
    private Gun gun;
    public Player(){}
    public Player(String name){
        this(name,100);
    }
    public Player(String name,int blood){
        this.name=name;
        this.blood=blood;
        showPlayer();
    }
    public void holdGun(Gun gun){
        this.gun=gun;
        showPlayer();
    }
    public void shootEnemy(Player enemy){
        System.out.printf("%s向%s開了一槍\n",this.name,enemy.name);
        if(gun==null){
            System.out.println(">>>"+name+"沒有槍,無法進行射擊!");
            return;
        }
        gun.shootEnemy(enemy);
    }
    public void loadClip(Clip clip){
        if(gun==null){
            System.out.println(">>>"+name+"沒有槍,無法裝彈夾!");
            return;
        }
        gun.loadClip(clip);
    }
    public void damage(int hurt){
        if(blood==0){
            System.out.println(">>>"+name+"已死亡,請勿鞭屍!");
            return;
        }

最後,咋們來一個測試類吧

class ChiJi{
    public static void main(String[] args){
        Player p1=new Player("老張",100);
        Player p2=new Player("老王",100);

        Gun gun=new Gun();
        p1.holdGun(gun);
        Clip clip=new Clip();
        for(int i=1;i<=30;i++){
            clip.pushBullet(new Bullet(12));
        }
        p1.loadClip(clip);
        for(int i=1;i<=40;i++){
            p1.shootEnemy(p2);
        }
    }
}

嘿嘿嘿,一整個關於老王和老張的戰爭就到此結束了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章