JAVA-打怪獸趣味小游戲(附效果圖)

:此項(xiàng)目主要用來(lái)鞏固面向?qū)ο?/code>以及父類子類繼承這一塊的知識(shí),其中涉及循環(huán)以及隨機(jī)函數(shù)的靈活運(yùn)用

一、定義父類(怪獸類)和父類(玩家類)

1.怪獸類的屬性和方法
屬性攻擊力生命值;
方法:怪獸普通攻擊玩家后,玩家的剩余生命值等于玩家原有生命值減去怪獸的攻擊力。

package daguaishou;
    public class GS {
        private int gj;//定義私有屬性攻擊
        private int sm;//定義私有屬性生命值
        public void setGj(int gj) {
            this.gj = gj;
        }//設(shè)置攻擊屬性值
        public int getGj() {
            return gj;
        }//獲取攻擊屬性值
        public int getSm() {
            return sm;
        }//獲取生命屬性值
        public void setSm(int sm) {
            this.sm = sm;
        }//設(shè)置生命屬性值

        public void ptgj_w(WJ wj1){
            
            wj1.setSm(wj1.getSm()-gj);//玩家的生命值等于原有生命值減去怪獸攻擊力
            System.out.println("怪獸1攻擊了玩家1,造成了"+gj+"點(diǎn)傷害,玩家1的剩余生命值為:"+wj1.getSm());   
        }//構(gòu)造怪獸打玩家的方法
}

2.玩家類的屬性和方法
屬性攻擊力,生命值;
方法:玩家普通攻擊怪獸后,怪獸的剩余生命值等于怪獸原有生命值減去玩家的攻擊力。

package daguaishou;

public class WJ {
    private int gj;//定義私有屬性攻擊
    private int sm;//定義私有屬性生命值
    public void setGj(int gj) {
        this.gj = gj;
    }//設(shè)置攻擊屬性值
    public int getGj() {
        return gj;
    }//獲取攻擊屬性值
    public int getSm() {
        return sm;
    }//獲取生命屬性值
    public void setSm(int sm) {
        this.sm = sm;
    }//設(shè)置生命屬性值

    public void ptgj_g(GS gs1){
    
        gs1.setSm(gs1.getSm()-gj);//怪獸的生命值等于原有生命值減去玩家攻擊力
        System.out.println("玩家1攻擊了怪獸1,造成了"+gj+"點(diǎn)傷害,怪獸1的剩余生命值為:"+gs1.getSm());
    }//構(gòu)造玩家打怪獸的方法
    
}

二、定義兩個(gè)子類(法師類)(刺客類)

1.創(chuàng)建子類法師類
(1)法師的屬性:藍(lán)條法術(shù)傷害,攻擊力

package daguaishou;

public class Fashi extends GS {//構(gòu)造法師子類,繼承怪獸類
    private int lt;//定義子類屬性藍(lán)量
    private int fssh=20;//定義屬性法術(shù)傷害
    private int gj=10;//定義攻擊力
    
    public int getLt() {
        return lt;
    }
    public void setLt(int lt) {
        this.lt = lt;
    }
    

    public int getFssh() {
        return fssh;
    }
    public void setFssh(int fssh) {
        this.fssh = fssh;
    }
 
}

(2)法師的方法:法術(shù)攻擊,每次攻擊積攢一層藍(lán)量,滿三層藍(lán)量,則釋放一次技能,造成魔法傷害。

public void fsgj_w(Cike tanglang){
        
        tanglang.setSm(tanglang.getSm()-gj);
                System.out.println("九尾妖狐(法師)發(fā)動(dòng)了攻擊,造成了"+gj+"點(diǎn)物理傷害,攻擊對(duì)象剩余生命值為:"+tanglang.getSm());
                lt++;//每普通攻擊一次,藍(lán)量條加一
                if(lt%3==0) {//每積滿三層能量條,釋放一次技能,造成魔法傷害
                    tanglang.setSm(tanglang.getSm()-fssh);
                    System.out.println("九尾妖狐(法師)蓄力三次,發(fā)動(dòng)了技能“欺詐寶珠”,造成了"+fssh+"點(diǎn)魔法傷害,攻擊對(duì)象的剩余生命值為:"+tanglang.getSm());
                    
                }
                
            }

:這里需要注意的是每滿三層則釋放一次技能,所以要套在循環(huán)

2.創(chuàng)建子類刺客類
(1)刺客的屬性:暴擊傷害,攻擊力

package daguaishou;

import java.util.Random;

public class Cike extends WJ {//構(gòu)造子類刺客,繼承玩家
    public int getBjsh() {
        return bjsh;
    }
    public void setBjsh(int bjsh) {
        this.bjsh = bjsh;
    }
     private int bjsh=30;//定義私有屬性暴擊傷害
        private int gj=5;
    
    }

(2)刺客的方法:暴擊傷害,每次攻擊時(shí),有%66的幾率造成暴擊傷害

    public void bj_g(Fashi huli){
        
                int randombj=new Random().nextInt(3); //引入隨機(jī)函數(shù),設(shè)置暴擊幾率
                if(randombj!=1) {//百分之33概率普通攻擊
                    huli.setSm(huli.getSm()-gj);
                    System.out.println("螳螂(刺客)攻擊了您,造成了"+gj+"點(diǎn)物理傷害,您的剩余生命值為:"+huli.getSm());
                }
                if(randombj==1) {//百分之66概率暴擊
                    huli.setSm(huli.getSm()-bjsh);
                        System.out.println("螳螂(刺客)發(fā)動(dòng)了技能“大殺四方”,造成了"+bjsh+"點(diǎn)暴擊傷害,您的剩余生命值為:"+huli.getSm());
                    
                    
                    
                }
         }  

:此處注意需要調(diào)用隨機(jī)函數(shù),定義隨機(jī)數(shù)為randombj,在0,1,2三個(gè)數(shù)字中隨機(jī),若randombj=1則相當(dāng)于在三個(gè)數(shù)字中,取一個(gè)數(shù)字的概率為三分之一。若nextInt(3)中,若將3換成4,則當(dāng)randombj=1時(shí),在四個(gè)數(shù)字中取1的幾率為四分之一(0,1,2,3取頭不取尾)。

三、主函數(shù):

1.游戲入口

package daguaishou;

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        
        System.out.println("歡迎來(lái)到召喚師峽谷!");
        System.out.print("請(qǐng)給自己設(shè)置一個(gè)想要的昵稱:");
        Scanner nc = new Scanner(System.in);
        String x = nc.nextLine();//輸入召喚師昵稱
        System.out.print("你好,"+x+"!"+"請(qǐng)選擇你想打的怪獸編號(hào)(1或2):");
        Scanner s = new Scanner(System.in);
        int y = s.nextInt();//輸入編號(hào)
        
            switch(y) {//根據(jù)所選編號(hào)判斷
            case 1:System.out.println("你選擇的怪獸是:九尾妖狐(法師)");break;
            case 2:System.out.println("你選擇的怪獸是:虛空螳螂(刺客)");break; 
            }

    

:此處調(diào)用了scanner類讓玩家進(jìn)行輸入想要的昵稱和編號(hào),在玩家選擇怪獸時(shí),運(yùn)用switch/case結(jié)構(gòu)。

2.創(chuàng)建實(shí)例對(duì)象,并賦初值

WJ wj1=new WJ();//創(chuàng)建對(duì)象wj1
    GS gs1=new GS();//創(chuàng)建對(duì)象gs1
    Fashi huli =new Fashi();//創(chuàng)建對(duì)象huli
    Cike tanglang = new Cike();//創(chuàng)建對(duì)象tanglang
    wj1.setSm(100);//設(shè)置wj1生命值為100
    wj1.setGj(10);//設(shè)置wj1攻擊力為10
    
    gs1.setSm(60);//設(shè)置gs1生命值為100
    gs1.setGj(20);//設(shè)置gs1攻擊力為100
    
    huli.setFssh(20);//設(shè)置huli法術(shù)傷害為20
    huli.setGj(10);//設(shè)置huli攻擊力為10
    huli.setSm(100);//設(shè)置huli生命值為100
    huli.setLt(1);//設(shè)置huli藍(lán)量為1
    
    tanglang.setSm(100);//設(shè)置tanglang生命值為100
    tanglang.setGj(10);//設(shè)置tanglang攻擊力為10
    tanglang.setBjsh(30);//設(shè)置tanglang暴擊傷害為30
    
    Fenghuang ss= new Fenghuang();
    ss.setGj(20);
    ss.setSm(100);

3.設(shè)置打怪獸規(guī)則:雙方有一人血量低于或等于0,則游戲結(jié)束。

while(huli.getSm()>0&&tanglang.getSm()>0) {//設(shè)置循環(huán)條件為雙方都存活時(shí)進(jìn)行戰(zhàn)斗
    huli.fsgj_w(tanglang);//狐貍打螳螂
    tanglang.bj_g(huli);//螳螂打狐貍
    }
    if(huli.getSm()<=0) {  //設(shè)置取勝條件為誰(shuí)生命值小于等于0,誰(shuí)失敗
        System.out.println("刺客螳螂取勝!");
    }
    else if(tanglang.getSm()<=0) {
        System.out.println("法師狐貍?cè)伲?);
    }
}

四、代碼效果圖:

打怪獸.png

綠色部分為玩家手動(dòng)輸入部分,可任意輸入昵稱和編號(hào)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容