Java基于面向?qū)ο髮?shí)現(xiàn)一個(gè)戰(zhàn)士小游戲
設(shè)計(jì)一個(gè)游戲系統(tǒng),在該系統(tǒng)當(dāng)中擁有戰(zhàn)士 Soldier 角色;,每個(gè)角色擁有自己的名字 name 、等級(jí) level、生命力 hp ,攻擊力 atk、防御力 def;,戰(zhàn)士都有普通攻擊行為 attack,其實(shí)現(xiàn)為根據(jù)自己的攻擊力減去 被攻擊對(duì)象的防御力 從而得到對(duì)方的失血量;,請(qǐng)?jiān)O(shè)計(jì)這個(gè)系統(tǒng)中有哪些類,分別有什么屬性和行為,有什么關(guān)聯(lián)關(guān)系,并在main方法中調(diào)用查看效果。
一、思路
首先,我們知道在系統(tǒng)中有個(gè)戰(zhàn)士的角色叫Soldier,Soldier角色擁有自己的名字、等級(jí)、生命力、攻擊力、防御力。我們就要區(qū)分有什么類型。戰(zhàn)士有個(gè)行為是普通攻擊,行為:方法。由此我們就知道到戰(zhàn)士Soldier是一個(gè)類,在進(jìn)行代碼實(shí)現(xiàn)。
二、代碼實(shí)現(xiàn)
當(dāng)我們得知Soldier屬于一個(gè)類是,我們是不是就應(yīng)該用面向?qū)ο髞?lái)進(jìn)行書寫?面向?qū)ο蟮闹匾娜齻€(gè)重點(diǎn)是什么:1、類2、屬性、3、方法。那當(dāng)我們知道了組成面向?qū)ο蟮娜齻€(gè)重點(diǎn)的第一個(gè)是類。首先,第一個(gè)用到的就是自定義的類,那我們將進(jìn)行代碼的實(shí)現(xiàn)吧。
public class Legend {//首字母大寫,見(jiàn)名思意 public static void main(String[] args) { } } public class Soldier {//首字母大寫,見(jiàn)名思意 //屬性 //方法 }
當(dāng)我們生成了一個(gè)自定義的類時(shí),在最開始的時(shí)候我們說(shuō)了面向?qū)ο笕齻€(gè)重點(diǎn)是由1、類2、屬性、3、方法。3種組成,那我們得知Soldier角色擁有自己的名字、等級(jí)、生命力、攻擊力、防御力,是一種屬性。那我們就應(yīng)該把名字、等級(jí)、生命力、攻擊力、防御力等屬性進(jìn)行填寫進(jìn)去。
public class Legend {//首字母大寫,見(jiàn)名思意 public static void main(String[] args) { } } public class Soldier {//首字母大寫,見(jiàn)名思意 //屬性 public String name;//姓名 public int level;//等級(jí) public int hp;//生命力 public int atk;//攻擊力 public int def;//防御力 //方法 }
當(dāng)Soldier這個(gè)角色我們已經(jīng)創(chuàng)造出來(lái)了,是不是就應(yīng)該創(chuàng)建這個(gè)角色了?這時(shí)候就需要用到方法了。當(dāng)我們?cè)谑褂脴?gòu)造器的時(shí)候,類里會(huì)默認(rèn)產(chǎn)生一個(gè)無(wú)參構(gòu)造,無(wú)參:沒(méi)有參數(shù),構(gòu)造器就是一個(gè)函數(shù),跟類名相同:這是避免我們?cè)跁鴮憙?nèi)容時(shí)避免報(bào)錯(cuò)。詳見(jiàn)圖一、圖二。在書寫時(shí)方法時(shí),也可以進(jìn)行快速的生成有參構(gòu)造的內(nèi)容。詳見(jiàn)圖二、圖三、圖四。
public class Legend { public static void main(String[] args) { Soldier yangke = new Soldier("yangke",50,500,68,2);//yangke的Soldier戰(zhàn)士實(shí)例 Soldier zhangsan = new Soldier("zhangsan",50,400,68,4);//zhangsan的Soldier戰(zhàn)士實(shí)例 } } public class Soldier { //屬性 public String name;//姓名 public int level;//等級(jí) public int hp;//生命力 public int atk;//攻擊力 public int def;//防御力 //方法 public Soldier(){//無(wú)參構(gòu)造 } public Soldier(String name, int level, int hp, int atk, int def) {//有參構(gòu)造 this.name = name;//姓名 this.level = level;//等級(jí) this.hp = hp;//生命力 this.atk = atk;//攻擊力 this.def = def;//防御力 } }
圖一:
圖二:
圖三:
圖四:
圖五:
當(dāng)我們已經(jīng)生成了兩名不同玩家的Soldier,那每個(gè)戰(zhàn)士都有普通攻擊的行為,在最開始的時(shí)候我們都說(shuō)了,行為就是等于方法,那方法是不是應(yīng)該書寫到Soldier戰(zhàn)士里面?肯定也要用yangke的Soldier來(lái)跟zhangsan的Soldier來(lái)進(jìn)行pk,那是不是要將zhangsan的Soldier引入到y(tǒng)angke的Soldier進(jìn)行pk?
public class Legend { public static void main(String[] args) { Soldier yangke = new Soldier("yangke",50,500,68,2);//yangke的Soldier戰(zhàn)士實(shí)例 Soldier zhangsan = new Soldier("zhangsan",50,400,68,4);//zhangsan的Soldier戰(zhàn)士實(shí)例 yangke.attack(zhangsan);//將zhangsan的Soldier引入到y(tǒng)angke的Soldier里面并有一個(gè)public void attack進(jìn)行接收 } } public class Soldier { //屬性 public String name;//姓名 public int level;//等級(jí) public int hp;//生命力 public int atk;//攻擊力 public int def;//防御力 //方法 public Soldier(){//無(wú)參構(gòu)造 } public Soldier(String name, int level, int hp, int atk, int def) {//有參構(gòu)造 this.name = name;//姓名 this.level = level;//等級(jí) this.hp = hp;//生命力 this.atk = atk;//攻擊力 this.def = def;//防御力 } public void attack(Soldier other){//當(dāng)主函數(shù)將zhangsan的Soldier引入到y(tǒng)angke的Soldier里面我們要進(jìn)行一個(gè)接收 int Damage = this.atk-other.def;//設(shè)置一個(gè)傷害的計(jì)算 Damage肯定等于yangke的攻擊力-zhangsan的防御力 other.hp-=Damage;//再用zhangsan的血量減去傷害得到zhangsan的血量 if (other.hp <= 0){//如果zhangsan的血量少于等于0時(shí),zhangsan陣亡,如果沒(méi)有進(jìn)行顯示傷害數(shù)據(jù) System.out.println(other.name+"已經(jīng)陣亡"); }else { System.out.println("成功普通攻擊了"+other.name+"并對(duì)它造成了"+Damage+"傷害"+other.name+"還剩"+other.hp+"血量"); } } }
最終結(jié)果
以上就是Java基于面向?qū)ο髮?shí)現(xiàn)一個(gè)戰(zhàn)士小游戲的詳細(xì)內(nèi)容,更多關(guān)于Java戰(zhàn)士小游戲的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MybatisPlus實(shí)現(xiàn)邏輯刪除的示例代碼
本文主要介紹了Mybatis?Plus實(shí)現(xiàn)邏輯刪除的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05使用ShardingSphere-Proxy實(shí)現(xiàn)分表分庫(kù)
這篇文章介紹了使用ShardingSphere-Proxy實(shí)現(xiàn)分表分庫(kù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02springboot中PostMapping正常接收json參數(shù)后返回404問(wèn)題
這篇文章主要介紹了springboot中PostMapping正常接收json參數(shù)后返回404問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05詳解如何在SpringBoot中優(yōu)雅地重試調(diào)用第三方API
在實(shí)際的應(yīng)用中,我們經(jīng)常需要調(diào)用第三方API來(lái)獲取數(shù)據(jù)或執(zhí)行某些操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12win10操作系統(tǒng)下重啟電腦java環(huán)境變量失效
這篇文章主要介紹了win10操作系統(tǒng)下重啟電腦java環(huán)境變量失效,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Filter中獲取傳遞參數(shù)方式(解決post請(qǐng)求參數(shù)問(wèn)題)
這篇文章主要介紹了Filter中獲取傳遞參數(shù)方式(解決post請(qǐng)求參數(shù)問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Spring Boot mybatis-config 和 log4j 輸出sql 日志的方式
這篇文章主要介紹了Spring Boot mybatis-config 和 log4j 輸出sql 日志的方式,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-07-07解析SpringSecurity自定義登錄驗(yàn)證成功與失敗的結(jié)果處理問(wèn)題
這篇文章主要介紹了SpringSecurity系列之自定義登錄驗(yàn)證成功與失敗的結(jié)果處理問(wèn)題,本文通過(guò)實(shí)例給大家講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11