Java根本 --- 面向对象综合训练
面向对象综合训练案例一:文字版格斗游戏
格斗游戏,每个游戏脚色的姓名,血量,都不雷同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来。
补充:
public class Test {
public static void main(String[] args) {
//两部分参数
//第一部分参数:要输出的内容%s(占位)
//第二部分参数:填充的数据
System.out.printf("你好啊%s","张三");
System.out.println();//printf无法换行,这里做换行处理
System.out.printf("%s你好啊%s","张三","李四");
}
}正题:
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); } 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; } else if (gender == '女') { //从girlfaces里面随机 int index = r.nextInt(girlfaces.length); this.face = girlfaces; }else{ this.face = "相貌平平"; } } 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 void attack(Role role){ Random r = new Random(); int index = r.nextInt(attacks_desc.length); String KungFu = attacks_desc; //输出一个攻击的效果 System.out.printf(KungFu,this.getName(),role.getName()); System.out.println(); //计算造成的伤害1 ~ 20 int hurt = r.nextInt(1,21); //修改一下挨揍的人的血量 //剩余血量 int remainBlood = role.getBlood() - hurt; //对剩余血量做一个验证,假如为负数了,就修改为0 remainBlood = remainBlood < 0 ? 0 : remainBlood; //修改一下挨揍的人的血量 role.setBlood(remainBlood); //受伤的描述 //血量>90 0索引的描述 //80 ~ 90 1索引的描述 //70 ~ 80 2索引的描述 //60 ~ 70 3索引的描述 //40 ~ 60 4索引的描述 //20 ~ 40 5索引的描述 //10 ~ 20 6索引的描述 //小于10的 7索引的描述 if(remainBlood > 90){ System.out.printf(injureds_desc,role.getName()); } else if (remainBlood > 80 && remainBlood70 && remainBlood60 && remainBlood40 && remainBlood20 && remainBlood10 && remainBlood
页:
[1]