//在上一篇博客的基础上,加了细节的改动
//改动:添加了外貌,性别,招式的细节描绘;添加了个人信息展示界面
//一创建java文件1,命名为playGame
package test2; import java.util.Random; public class playGame { //格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来 //eg:姓名:乔峰 血量:100 姓名:鸠磨章 血量:100 private 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调用者 攻击参数r2 public 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~20 int hurt=r.nextInt(20)+1; //修改剩余血量 remainBoold(剩余血量) int remainBoold=role.getBlood()-hurt; //当血量为负数时,修整为0 remainBoold=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 7 if(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开始攻击r2 r1.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; } } } }