//在上一篇博客的基礎上,加了細節的改動
//改動:添加了外貌,性別,招式的細節描繪;添加了個人信息展示界面
//一創建java文件1,命名為playGame
package test2;import java.util.Random;public class playGame {//格斗游戲,每個游戲角色的姓名,血量,都不相同,在選定人物的時候(new對象的時候),這些信息就應該被確定下來//eg:姓名:喬峰 血量:100 姓名:鳩磨章 血量:100private String name;//姓名private int blood;//血量private char gender;//性別private String face;//長相String[] boyfaces={"風流俊雅","器宇軒昂","相貌英俊","五官端正","相貌平平","一塌糊涂","面目猙獰"};String[] girlfaces={"美色絕倫","沉魚落雁","亭亭玉立","身材較好","相貌平平","相貌簡陋","慘不忍睹"};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 playGame(){}public playGame(String name,int blood,char gender){this.name=name;this.blood=blood;this.gender=gender;//face是隨機長相,不是在創建對象的時候給的setFace(gender);}public String getName() {return name;}public void setName(String name) {this.name = 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=='男'){ //從boyfaces里隨機長相int index=r.nextInt(boyfaces.length);this.face=boyfaces[index];}else if(gender=='女'){//從girlfaces里隨機長相int index=r.nextInt(girlfaces.length);this.face=girlfaces[index];}else{this.face="面目猙獰";}}//展示人物信息public void showRoleInfo(){System.out.println("姓名為:"+getName());System.out.println("血量為:"+getBlood());System.out.println("性別為:"+getGender());System.out.println("長相為:"+getFace());}//定義攻擊別人//誰攻擊誰 r1攻擊r2 r1調用者 攻擊參數r2public void attack(playGame role){//輸出一個攻擊的效果Random r=new Random();int index= r.nextInt(attacks_desc.length);String kungFu=attacks_desc[index];//1打別人的人,2挨揍的人System.out.printf(kungFu,this.getName(),role.getName());//計算造成的傷害1~20int hurt=r.nextInt(20)+1;//修改剩余血量 remainBoold(剩余血量)int remainBoold=role.getBlood()-hurt;//當血量為負數時,修整為0remainBoold=remainBoold<0?0:remainBoold;//修改role的血量role.setBlood(remainBoold);//受傷的描述//不做隨機,做判斷(因為傷害越來越重)//判斷條件:血量>90 0索引描述//80~90 1//70~80 2//60~70 3//40~60 4//20~40 5//10~20 6//小于10 7if(remainBoold>90){System.out.printf(injureds_desc[0],role.getName());}else if(remainBoold>80&& remainBoold<=90){System.out.printf(injureds_desc[1],role.getName());}else if(remainBoold>70&& remainBoold<=80){System.out.printf(injureds_desc[2],role.getName());}else if(remainBoold>70&& remainBoold<=80){System.out.printf(injureds_desc[3],role.getName());}else if(remainBoold>60&& remainBoold<=70){System.out.printf(injureds_desc[4],role.getName());}else if(remainBoold>40&& remainBoold<=60){System.out.printf(injureds_desc[5],role.getName());}else if(remainBoold>20&& remainBoold<=40){System.out.printf(injureds_desc[6],role.getName());}else if(remainBoold<10){System.out.printf(injureds_desc[7],role.getName());}System.out.println();} }
//二創建java文件2,命名為Gametest
package test2;public class GameTest {public static void main(String[] args) {//創建第一個角色playGame r1 = new playGame("喬峰", 100,'男');playGame r2 = new playGame("鳩磨章", 100,'男');r1.showRoleInfo();//展示人物1面板r2.showRoleInfo();//展示人物2面板//開始決斗,回合制while (true){//r1開始攻擊r2r1.attack(r2);//判斷r2的剩余血量if (r2.getBlood() == 0) {System.out.println(r1.getName() + "K.O了" + r2.getName());break;}r2.attack(r1);if(r1.getBlood()==0){System.out.println(r2.getName() + "K.O了" + r1.getName());break;}}} }