[基礎題] 5.(*)按如下要求編寫Java應用程式:(1)編寫一個用於表示戰鬥能力的介面Fightable,
阿新 • • 發佈:2019-02-19
/*5.(*)按如下要求編寫Java應用程式:
(1)編寫一個用於表示戰鬥能力的介面Fightable,
該介面包含:整型常量MAX;
方法void win(),用於描述戰鬥者獲勝後的行為;
方法int injure(int x),用於描述戰鬥者受傷後的行為。
(2)編寫一個非抽象的戰士類Warrior,實現介面Fightable。
該類中包含兩個整型變數:經驗值experience和血液值blood。
當戰士獲勝後經驗值會增加,而受傷後血液值會減少x,
並且當戰鬥者的血液值低於MAX時會輸出危險提示。
(3)編寫戰士類Warrior的子類BloodWarrior,
該類建立的戰士在血液值低於MAX/2時才會輸出危險提示。
(4)編寫主類TestWarrior,對上述介面和類進行測試。
(1)編寫一個用於表示戰鬥能力的介面Fightable,
該介面包含:整型常量MAX;
方法void win(),用於描述戰鬥者獲勝後的行為;
方法int injure(int x),用於描述戰鬥者受傷後的行為。
(2)編寫一個非抽象的戰士類Warrior,實現介面Fightable。
該類中包含兩個整型變數:經驗值experience和血液值blood。
當戰士獲勝後經驗值會增加,而受傷後血液值會減少x,
並且當戰鬥者的血液值低於MAX時會輸出危險提示。
(3)編寫戰士類Warrior的子類BloodWarrior,
該類建立的戰士在血液值低於MAX/2時才會輸出危險提示。
(4)編寫主類TestWarrior,對上述介面和類進行測試。
* */
//勝利的話 :血液不變,經驗+10
//受傷的話 :血液-10;
//如果血液低於30提示危險,等於就提示(死亡)K.0
//輸入Pk回合數,輸入PK結果,"y代表勝利,n代表受傷"
//拓展功能:當經驗值滿100時,等級+1,初始化血液100,經驗值初始化為0
import java.util.Scanner; public class Test_05 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); BloodWarrior s1 = new BloodWarrior(); s1.blood = 100;//初始血液值 System.out.print("請輸入回合數:"); int bout = sc.nextInt(); System.out.println("請輸入Pk結果 (y勝利/n受傷):"); char PK = sc.next().charAt(0); s1.pk(PK, bout); } } interface Fightable { int max = 30;// 危險值 void win();// 用於描述戰鬥者獲勝後的行為 int injure(int x);// 用於描述戰鬥者受傷後的行為 } class Warrinor implements Fightable { int blood;// 定義血液值 int experience;// 定義經驗值 int grade; public void win() { }; public int injure(int x) { return x; } } class BloodWarrior extends Warrinor { public void win() { experience += 10; System.out.println("血液值:" + blood + "/經驗值:" + experience+"/等級:"+grade); if(experience == 100){ grade += 1; experience=0; blood = 100 ; System.out.println("恭喜!等級提升!"+"等級:"+grade); } } public int injure(int x) { if (blood <= max) { System.out.println("*危險!血液值過低,請及時補血!"); }// + "血液值:" + blood + "/經驗值:" + experience+"/等級:"+grade blood -= x; System.out.println("受傷/血液值:" + "-" + x + "\t 剩餘血液值:" + blood + "/經驗值:" + experience+"/等級:"+grade); // if(grade <= 0 && blood == 0){ if (blood == 0) { System.out.println("K.O");// knock out System.exit(0);//想直接整個程式的結束用System.exit(0); // } }return blood; } public void pk(char PK, int bout) { for (int i = 1; i <= bout; i++) { if (PK == 'y') { win(); } if (PK == 'n') { injure(10); } } } }