JAVA练习题17:文字版格斗游戏
生活随笔
收集整理的這篇文章主要介紹了
JAVA练习题17:文字版格斗游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文字版格斗游戲
1. 規則:格斗游戲,每個游戲角色的姓名,血量,都不相同,在選定任務的時候(new對象的時候),這些信息就應該被確定下來
2. 舉例:
姓名為:喬峰 姓名為:鳩摩智
血量為:100 血量為:100
性別為:男 性別為:男
長相為:氣宇軒昂 長相為:五官端正
喬峰使出了一招【游空探爪】,飛起身形自半空中變掌為抓鎖向鳩摩智。
結果給鳩摩智造成一處瘀傷
鳩摩智還剩下xxx點血。
鳩摩智上步搶身,招中套招,一招【劈掛連環】,連環攻向喬峰。
結果一擊命中,喬峰痛得彎下腰
喬峰還剩下xxx點血。
…… …… … …… …
喬峰K.O.了鳩摩智。
1.測試類
import java.util.Scanner;public class FDemo{public static void main(String[] args){/** 文字版格斗游戲* 規則:格斗游戲,每個游戲角色的姓名,血量,都不相同,在選定任務的時候(new對象的時候),* 這些信息就應該被確定下來* 舉例:* 姓名為:喬峰 姓名為:鳩摩智* 血量為:100 血量為:100* 性別為:男 性別為:男* 長相為:氣宇軒昂 長相為:五官端正* 喬峰使出了一招【游空探爪】,飛起身形自半空中變掌為抓鎖向鳩摩智。* 結果給鳩摩智造成一處瘀傷* 鳩摩智還剩下xxx點血。* 鳩摩智上步搶身,招中套招,一招【劈掛連環】,連環攻向喬峰。* 結果一擊命中,喬峰痛得彎下腰* 喬峰還剩下xxx點血。* …… …… … …… …* 喬峰K.O.了鳩摩智。** */String name;char gender = '無';Role r1 = null;Role r2 = null;for (int i = 1; i < 3; i++) {Scanner sc = new Scanner(System.in);System.out.println("請輸入第" + i + "個角色名:");name = sc.next();System.out.println("請輸入第" + i + "個角色的性別(0 男 1 女):");int flag = sc.nextInt();if(flag == 0 || flag == 1){gender = flag == 0 ? '男': '女';}if(i == 1){//1.創建第一個角色r1 = new Role(name,100,gender);}else if(i == 2){//2.創建第一個角色r2 = new Role(name,100,gender);}}r1.showRoleInfo();r2.showRoleInfo();//3.開始格斗,回合制游戲while(true){//r1開始攻擊r2r1.attack(r2);//判斷r2的剩余血量if(r2.getBlood() == 0){System.out.println(r1.getName() + "K.O.了" + r2.getName());break;}//r2開始攻擊r1r2.attack(r1);//判斷r2的剩余血量if(r1.getBlood() == 0){System.out.println(r2.getName() + "K.O.了" + r1.getName());break;}}} }2.JavaBean類
import java.util.Random;public class Role {private String name; //姓名private int blood; //血量private char gender; //性別private String face; //長相 是隨機的String[] boyfaces= {"風流俊雅","氣宇軒昂","相貌英俊","五官端正","相貌平平","一塌糊涂","面目猙獰"};String[] girlfaces ={"美奐絕倫","沉魚落雁","婷婷玉立","身材嬌好","相貌平平","相貌簡陋","慘不忍睹"};//attack 攻擊描述:String[] attacks_desc={"%s使出了一招【背心釘】,轉到對方的身后,一掌向%s背心的靈臺穴拍去。","%s使出了一招【游空探爪】,飛起身形自半空中變掌為抓鎖向%s。","%s大喝一聲,身形下伏,一招【劈雷墜地】,捶向%s雙腿。","%s運氣于掌,一瞬間掌心變得血紅,一式【掌心雷】,推向%s。","%s陰手翻起陽手跟進,一招【沒遮攔】,結結實實的捶向%s。","%s上步搶身,招中套招,一招【劈掛連環】,連環攻向%s。"};//injured 受傷描述:String[] injureds_desc={"結果%s退了半步,毫發無損","結果給%s造成一處瘀傷","結果一擊命中,%s痛得彎下腰","結果%s痛苦地悶哼了一聲,顯然受了點內傷","結果%s搖搖晃晃,一跤摔倒在地","結果%s臉色一下變得慘白,連退了好幾步","結果『轟』的一聲,%s口中鮮血狂噴而出","結果%s一聲慘叫,像灘軟泥般塌了下去"};//無參構造方法public Role(){}//全參構造方法public Role(String name, int blood, char gender) {this.name = name;this.blood = blood;this.gender = gender;//長相隨機setFace(gender);}//格斗方法:用于攻擊別人//Role r1 = new Role();//Role r2 = new Role();//r1攻擊r2 等價于 r1.攻擊(r2) 即方法的調用者攻擊參數public void attack(Role role){Random r = new Random();//攻擊招數為隨機int index = r.nextInt(attacks_desc.length);String KunFu = attacks_desc[index];//"%s上步搶身,招中套招,一招【劈掛連環】,連環攻向%s。"System.out.printf(KunFu,this.getName(),role.getName());System.out.println();//造成的傷害是一個隨機值[1,20] hurt為造成的傷害int hurt = r.nextInt(20)+1;//剩余血量int remainBoold = role.getBlood() - hurt;//對剩余血量做一個驗證,如果為負數了,就修改為0remainBoold = remainBoold < 0 ? 0 : remainBoold;//修改以下挨揍的人的血量role.setBlood(remainBoold);/* 受傷的描述 injureds_desc[]* 傷害 = 0 0索引的描述* 血量 >90 1索引的描述* (75,90] 2索引的描述* (60,75] 3索引的描述* (40,60] 4索引的描述* (20,40] 5索引的描述* (10,20] 6索引的描述* (0,10] 7索引的描述* */if(hurt == 0){System.out.printf(injureds_desc[0],role.getName());}else if(remainBoold > 90){System.out.printf(injureds_desc[1],role.getName());}else if(remainBoold > 75){System.out.printf(injureds_desc[2],role.getName());}else if(remainBoold > 60){System.out.printf(injureds_desc[3],role.getName());}else if(remainBoold > 40){System.out.printf(injureds_desc[4],role.getName());}else if(remainBoold > 20){System.out.printf(injureds_desc[5],role.getName());}else if(remainBoold > 10){System.out.printf(injureds_desc[6],role.getName());}else{System.out.printf(injureds_desc[7],role.getName());}System.out.println();System.out.println(role.getName() + "還剩下" + role.getBlood() + "點血。");}//輸出參數方法public void showRoleInfo(){System.out.println("姓名為:" + getName());System.out.println("血量為:" + getBlood());System.out.println("性別為:" + getGender());System.out.println("長相為:" + getFace());}//參數的get和set方法public void setName(String name){this.name = name;}public String getName(){return name;}public int getBlood() {return blood;}public void setBlood(int blood) {this.blood = blood;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}public String getFace() {return face;}public void setFace(char gender) {Random r = new Random();if (gender == '男'){int index = r.nextInt(boyfaces.length);this.face = boyfaces[index];}else if(gender == '女'){int index = r.nextInt(girlfaces.length);this.face = girlfaces[index];}else{this.face = "無知無畏";}} }總結
以上是生活随笔為你收集整理的JAVA练习题17:文字版格斗游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 驾照科一
- 下一篇: 百度地图标点鼠标样式更改