Johnny850807 / Coding-GYM

自己菜鳥階段時在練習Java物件導向、設計模式時,所設計的題庫,此專案庫目前用來讓我的同學/學生 (欠調教的) 們提交程式碼來進行Review,欲參考OOP題目者可直接到Projects區觀看,題目皆(85%)擁有示範解答程式碼。ISSUE放的都是Code Review嘴砲。(物件導向設計學分兩階段→JAVA→設計模式)
24 stars 6 forks source link

Abstract Factory : 裝備戰鬥 #24

Open Johnny850807 opened 7 years ago

Johnny850807 commented 7 years ago

難度:1

Abstract Factory 只是一堆 相關的 Factory Method 而已...

在資源區的 Abstract Factory 資料夾底下有個 Weapon.jar 裡面放著許多裝備,你的任務就是提供一個工廠 使 英雄 與怪物 可以從該工廠取得一系列相關裝備 (有武器、魔法武器以及防禦裝備) ( 因此英雄與怪物並不需要知道,自己將取得何種裝備。)

這樣的好處是,英雄與怪物都不能自行搭配自己的裝備, 他們所得到的裝備都必須是一系列跟某個工廠取得的。 (英雄與怪物一樣請自行設計)

遊戲一開始玩家及怪物需選擇某一系列裝備 (例如:飛鏢、盾牌跟閃電球...) (都在Weapon.jar)

英雄與怪物必須使用這些裝備進行戰鬥,分出高下,印出過程。

每回合英雄與怪物都自行決定,要使用魔法攻擊還是武器攻擊。 若要使用魔法攻擊 則要確認魔力是否足夠。

Weapon.jar 文件如下

interface Weapon 函數 public String getName() //得到武器的名稱

interface Attackable extends Weapon //可攻擊武器 函數 public int getLoseMp(); //得到使用武器需耗費之魔力值,必須使用此函數判斷魔力是否足夠。 public int getInjury() ; //得到攻擊武器傷害值 public int getReaptedTimes() //得到連擊數量 (有些武器可以連續攻擊好幾次)

interface AttackWeapon extends Attackable 說明 AttackWeapon 的實踐 擁有許多 武器子類別 (若要自訂攻擊性武器 繼承此即可) 實踐 Darts 飛鏢 , Glove 拳套 , Gun手槍 , Sword 長劍

interace DefenseWeapon extends Weapon (防禦性裝備) 函數 int getDefense(); //得到物理防禦力 (抵抗攻擊武器) int getMagicDefense(); //得到魔法防禦力 (抵抗魔法攻擊) 實踐 Armor 盔甲 , Shield 盾牌

interace MagicPower extends Attackable (魔法攻擊) 實踐 FireBall 火球 , ThunderBall 閃電球

所需要專注的事情 是抽象工廠 的 價值 以及實踐方式

Example:

image

Example Output ( 無須模仿,可自行設計 )

請輸入名子: 水 選擇角色 : (1) 忍者 (2) 武士 (3) 拳皇 : 1 輪到 水 .... 狀態 : Hp 20000 , Mp 1000 選擇動作 : (1) 飛鏢 (2) 雷電球 1 水 使用 飛鏢 進行攻擊 !! 145 118 120 169 108 166 135 175 119 輪到 Sans .... 狀態 : Hp 16745 , Mp 2000 Sans 使用 激光大砲 進行攻擊 !! 1051 輪到 水 .... 狀態 : Hp 18949 , Mp 1000 選擇動作 : (1) 飛鏢 (2) 雷電球 2 水 使用 雷電球 進行攻擊 !! 1636 輪到 Sans .... 狀態 : Hp 15109 , Mp 2000 Sans 使用 激光大砲 進行攻擊 !! 1192 輪到 水 .... 狀態 : Hp 17757 , Mp 900 選擇動作 : (1) 飛鏢 (2) 雷電球

....略