<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
設計一個遊戲系統,在該系統當中擁有戰士 Soldier 角色;,每個角色擁有自己的名字 name 、等級 level、生命力 hp ,攻擊力 atk、防禦力 def;,戰士都有普通攻擊行為 attack,其實現為根據自己的攻擊力減去 被攻擊物件的防禦力 從而得到對方的失血量;,請設計這個系統中有哪些類,分別有什麼屬性和行為,有什麼關聯關係,並在main方法中呼叫檢視效果。
首先,我們知道在系統中有個戰士的角色叫Soldier,Soldier角色擁有自己的名字、等級、生命力、攻擊力、防禦力。我們就要區分有什麼型別。戰士有個行為是普通攻擊,行為:方法。由此我們就知道到戰士Soldier是一個類,在進行程式碼實現。
當我們得知Soldier屬於一個類是,我們是不是就應該用物件導向來進行書寫?物件導向的重要的三個重點是什麼:1、類2、屬性、3、方法。那當我們知道了組成物件導向的三個重點的第一個是類。首先,第一個用到的就是自定義的類,那我們將進行程式碼的實現吧。
public class Legend {//首字母大寫,見名思意 public static void main(String[] args) { } } public class Soldier {//首字母大寫,見名思意 //屬性 //方法 }
當我們生成了一個自定義的類時,在最開始的時候我們說了物件導向三個重點是由1、類2、屬性、3、方法。3種組成,那我們得知Soldier角色擁有自己的名字、等級、生命力、攻擊力、防禦力,是一種屬性。那我們就應該把名字、等級、生命力、攻擊力、防禦力等屬性進行填寫進去。
public class Legend {//首字母大寫,見名思意 public static void main(String[] args) { } } public class Soldier {//首字母大寫,見名思意 //屬性 public String name;//姓名 public int level;//等級 public int hp;//生命力 public int atk;//攻擊力 public int def;//防禦力 //方法 }
當Soldier這個角色我們已經創造出來了,是不是就應該建立這個角色了?這時候就需要用到方法了。當我們在使用構造器的時候,類裡會預設產生一個無參構造,無參:沒有引數,構造器就是一個函數,跟類名相同:這是避免我們在書寫內容時避免報錯。詳見圖一、圖二。在書寫時方法時,也可以進行快速的生成有參構造的內容。詳見圖二、圖三、圖四。
public class Legend { public static void main(String[] args) { Soldier yangke = new Soldier("yangke",50,500,68,2);//yangke的Soldier戰士範例 Soldier zhangsan = new Soldier("zhangsan",50,400,68,4);//zhangsan的Soldier戰士範例 } } public class Soldier { //屬性 public String name;//姓名 public int level;//等級 public int hp;//生命力 public int atk;//攻擊力 public int def;//防禦力 //方法 public Soldier(){//無參構造 } public Soldier(String name, int level, int hp, int atk, int def) {//有參構造 this.name = name;//姓名 this.level = level;//等級 this.hp = hp;//生命力 this.atk = atk;//攻擊力 this.def = def;//防禦力 } }
圖一:
圖二:
圖三:
圖四:
圖五:
當我們已經生成了兩名不同玩家的Soldier,那每個戰士都有普通攻擊的行為,在最開始的時候我們都說了,行為就是等於方法,那方法是不是應該書寫到Soldier戰士裡面?肯定也要用yangke的Soldier來跟zhangsan的Soldier來進行pk,那是不是要將zhangsan的Soldier引入到yangke的Soldier進行pk?
public class Legend { public static void main(String[] args) { Soldier yangke = new Soldier("yangke",50,500,68,2);//yangke的Soldier戰士範例 Soldier zhangsan = new Soldier("zhangsan",50,400,68,4);//zhangsan的Soldier戰士範例 yangke.attack(zhangsan);//將zhangsan的Soldier引入到yangke的Soldier裡面並有一個public void attack進行接收 } } public class Soldier { //屬性 public String name;//姓名 public int level;//等級 public int hp;//生命力 public int atk;//攻擊力 public int def;//防禦力 //方法 public Soldier(){//無參構造 } public Soldier(String name, int level, int hp, int atk, int def) {//有參構造 this.name = name;//姓名 this.level = level;//等級 this.hp = hp;//生命力 this.atk = atk;//攻擊力 this.def = def;//防禦力 } public void attack(Soldier other){//當主函數將zhangsan的Soldier引入到yangke的Soldier裡面我們要進行一個接收 int Damage = this.atk-other.def;//設定一個傷害的計算 Damage肯定等於yangke的攻擊力-zhangsan的防禦力 other.hp-=Damage;//再用zhangsan的血量減去傷害得到zhangsan的血量 if (other.hp <= 0){//如果zhangsan的血量少於等於0時,zhangsan陣亡,如果沒有進行顯示傷害資料 System.out.println(other.name+"已經陣亡"); }else { System.out.println("成功普通攻擊了"+other.name+"並對它造成了"+Damage+"傷害"+other.name+"還剩"+other.hp+"血量"); } } }
最終結果
以上就是Java基於物件導向實現一個戰士小遊戲的詳細內容,更多關於Java戰士小遊戲的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45