import java.util.Random;
public class Role {
private String name;
private int blood;
public Role(){}
public Role(String name,int blood){
this.name=name;
this.blood=blood;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setBlood(int blood) {
this.blood = blood;
}
public int getBlood(){
return blood;
}
public void attack(Role role){
//造成随机伤害
Random a=new Random();
int hurt=a.nextInt(20)+1;
//计算挨揍的人的剩余血量
int lastBlood=role.getBlood()-hurt;
//判断剩余血量和0关系,确保不会小于0,若小于修改为0
lastBlood=lastBlood<0?0:lastBlood;
//将挨揍的人血量赋值给setBlood以便下次操作
role.setBlood(lastBlood);
//乔峰举起拳头,打了鸠摩之一下,造成了XX点伤害,鸠摩之还剩下了XXX点血量
System.out.println(this.getName()+”举起拳头,打了”+role.getName()+”一下,造成了”+hurt+”点伤害,”+role.getName()+”还剩下了”+lastBlood+”点血量”);
}//this.getName(),表示方法的调用者
}
测试类
public class RoleTest {
public static void main(String[] args){
Role r1=new Role(“乔峰”,100);
Role r2=new Role(“鸠摩智”,100);
System.out.println(r1.getName());
System.out.println(r1.getBlood());
System.out.println(r2.getName());
System.out.println(r2.getBlood());
while(true){
r1.attack(r2);
if(r2.getBlood()==0){
System.out.println(r1.getName()+”KO”+r2.getName());
break;
}
r2.attack(r1);
if(r1.getBlood()==0){
System.out.println(r2.getName()+”KO”+r1.getName());
break;
}
}
}
}
输出
乔峰
100
鸠摩智
100
乔峰举起拳头,打了鸠摩智一下,造成了7点伤害,鸠摩智还剩下了93点血量
鸠摩智举起拳头,打了乔峰一下,造成了18点伤害,乔峰还剩下了82点血量
乔峰举起拳头,打了鸠摩智一下,造成了14点伤害,鸠摩智还剩下了79点血量
鸠摩智举起拳头,打了乔峰一下,造成了14点伤害,乔峰还剩下了68点血量
乔峰举起拳头,打了鸠摩智一下,造成了12点伤害,鸠摩智还剩下了67点血量
鸠摩智举起拳头,打了乔峰一下,造成了11点伤害,乔峰还剩下了57点血量
乔峰举起拳头,打了鸠摩智一下,造成了4点伤害,鸠摩智还剩下了63点血量
鸠摩智举起拳头,打了乔峰一下,造成了10点伤害,乔峰还剩下了47点血量
乔峰举起拳头,打了鸠摩智一下,造成了1点伤害,鸠摩智还剩下了62点血量
鸠摩智举起拳头,打了乔峰一下,造成了20点伤害,乔峰还剩下了27点血量
乔峰举起拳头,打了鸠摩智一下,造成了1点伤害,鸠摩智还剩下了61点血量
鸠摩智举起拳头,打了乔峰一下,造成了17点伤害,乔峰还剩下了10点血量
乔峰举起拳头,打了鸠摩智一下,造成了19点伤害,鸠摩智还剩下了42点血量
鸠摩智举起拳头,打了乔峰一下,造成了5点伤害,乔峰还剩下了5点血量
乔峰举起拳头,打了鸠摩智一下,造成了7点伤害,鸠摩智还剩下了35点血量
鸠摩智举起拳头,打了乔峰一下,造成了3点伤害,乔峰还剩下了2点血量
乔峰举起拳头,打了鸠摩智一下,造成了14点伤害,鸠摩智还剩下了21点血量
鸠摩智举起拳头,打了乔峰一下,造成了11点伤害,乔峰还剩下了0点血量
鸠摩智KO乔峰
优化
import java.util.Random;
public class Role {
private String name;
private int blood;
private char gender;
private String face;
String[] boyfaces={“气宇轩昂”,”风流俊雅”,”相貌英俊”,”五官端正”,”相貌平平”,”一塌糊涂”,”面目狰狞”};
String[] girlfaces={“美妙绝伦”,”沉鱼落雁”,”亭亭玉立”,”身材姣好”,”相貌平平”,”相貌简陋”,”惨不忍睹”};
public Role(){}
public Role(String name,int blood,char gender){
this.name=name;
this.blood=blood;
this.gender=gender;
//this.face=face;由于是随机长相,不再创建对象里面,所以直接调用set方法
setFace(gender);
}
public void setGender(char gender){
this.gender=gender;
}
public char getGender(){
return gender;
}
public void setFace(char gender){
Random r=new Random();
if(gender==’男’){
//从boyfaces里面随机抽取长相,index记录随机索引
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=”面目狰狞”;}
}
public String getFace(){
return face;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setBlood(int blood) {
this.blood = blood;
}
public int getBlood(){
return blood;
}
//attack攻击描述
String[] attacks_desc={
“%s使出一招【背心钉】,转到对方的身后,一掌向%s背心的灵台穴拍去。”,
“%s使出一招【游空谈爪】,飞起身形自半空中变掌为爪锁向%s。”,
“%s大喝一声身形下伏,一招【劈雷坠地】,锤向%s双腿。”,
“%s运气于掌,一瞬间掌心变得血红,一式【掌心雷】推向%s。”,
“%s阴手翻起阳手跟进,一招【没遮拦】,结结实实锤向%s。”,
“%s止步向前,招中套招,一招【劈挂连环】,连环攻击向%s。”
};
String[] injureds_desc={
“结果%s退了半步,毫发无损”,//血量>=90
“结果给%s造成一处淤伤”,//血量70-90
“结果一击必中,%s痛得弯下腰”,//血量50-70
“结果%s痛苦的闷哼一声,显然受了点内伤”,//血量30-50
“结果%s摇摇晃晃,一跤摔倒在地”,//血量20-30
“结果%s一声惨叫,像一瘫软泥般塌了下去”//血量<20
};
public void attack(Role role){
//造成随机伤害
Random a=new Random();
int hurt=a.nextInt(20)+1;
//随机招式
int index1=a.nextInt(attacks_desc.length);
String kungFu=attacks_desc[index1];
System.out.printf(kungFu,this.getName(),role.getName());
System.out.println();
//计算挨揍的人的剩余血量
int lastBlood=role.getBlood()-hurt;
//判断剩余血量和0关系,确保不会小于0,若小于修改为0
lastBlood=lastBlood<0?0:lastBlood;
//将挨揍的人血量赋值给setBlood以便下次操作
role.setBlood(lastBlood);
//受伤描述
if(role.getBlood()>=90){
System.out.printf(injureds_desc[0],role.getName());
} else if (role.getBlood()>=70&&role.getBlood()<90){
System.out.printf(injureds_desc[1],role.getName());
}else if (role.getBlood()>=50&&role.getBlood()<70){
System.out.printf(injureds_desc[2],role.getName());
}else if (role.getBlood()>=30&&role.getBlood()<50){
System.out.printf(injureds_desc[3],role.getName());
}else if (role.getBlood()>=20&&role.getBlood()<30){
System.out.printf(injureds_desc[4],role.getName());
}else if (role.getBlood()>=0&&role.getBlood()<20){
System.out.printf(injureds_desc[5],role.getName());
}
System.out.println();
//乔峰举起拳头,打了鸠摩之一下,造成了XX点伤害,鸠摩之还剩下了XXX点血量
//System.out.println(this.getName()+”举起拳头,打了”+role.getName()+”一下,造成了”+hurt+”点伤害,”+role.getName()+”还剩下了”+lastBlood+”点血量”);
}//this.getName(),表示方法的调用者
//展示信息
public void showRoleInfo(){
System.out.print(“姓名为”+getName()+” “);
System.out.print(“血量为”+getBlood()+” “);
System.out.print(“性别为”+getGender()+” “);
System.out.print(“长相为”+getFace()+” “);
System.out.println();
}
}
测试类
public class RoleTest {
public static void main(String[] args){
Role r1=new Role(“乔峰”,100,’男’);
Role r2=new Role(“美琪美雪”,100,’女’);
/*System.out.println(r1.getName());
System.out.println(r1.getBlood());
System.out.println(r2.getName());
System.out.println(r2.getBlood());
*/
r1.showRoleInfo();
r2.showRoleInfo();
while(true){
r1.attack(r2);
if(r2.getBlood()==0){
System.out.println(r1.getName()+”KO”+r2.getName());
break;
}
r2.attack(r1);
if(r1.getBlood()==0){
System.out.println(r2.getName()+”KO”+r1.getName());
break;
}
}
}
}
输出
姓名为乔峰 血量为100 性别为男 长相为风流俊雅
姓名为美琪美雪 血量为100 性别为女 长相为身材姣好
乔峰使出一招【背心钉】,转到对方的身后,一掌向美琪美雪背心的灵台穴拍去。
结果美琪美雪退了半步,毫发无损
美琪美雪大喝一声身形下伏,一招【劈雷坠地】,锤向乔峰双腿。
结果给乔峰造成一处淤伤
乔峰使出一招【游空谈爪】,飞起身形自半空中变掌为爪锁向美琪美雪。
结果给美琪美雪造成一处淤伤
美琪美雪使出一招【背心钉】,转到对方的身后,一掌向乔峰背心的灵台穴拍去。
结果一击必中,乔峰痛得弯下腰
乔峰使出一招【游空谈爪】,飞起身形自半空中变掌为爪锁向美琪美雪。
结果给美琪美雪造成一处淤伤
美琪美雪阴手翻起阳手跟进,一招【没遮拦】,结结实实锤向乔峰。
结果一击必中,乔峰痛得弯下腰
乔峰使出一招【游空谈爪】,飞起身形自半空中变掌为爪锁向美琪美雪。
结果一击必中,美琪美雪痛得弯下腰
美琪美雪使出一招【背心钉】,转到对方的身后,一掌向乔峰背心的灵台穴拍去。
结果一击必中,乔峰痛得弯下腰
乔峰大喝一声身形下伏,一招【劈雷坠地】,锤向美琪美雪双腿。
结果美琪美雪痛苦的闷哼一声,显然受了点内伤
美琪美雪止步向前,招中套招,一招【劈挂连环】,连环攻击向乔峰。
结果乔峰痛苦的闷哼一声,显然受了点内伤
乔峰运气于掌,一瞬间掌心变得血红,一式【掌心雷】推向美琪美雪。
结果美琪美雪痛苦的闷哼一声,显然受了点内伤
美琪美雪使出一招【游空谈爪】,飞起身形自半空中变掌为爪锁向乔峰。
结果乔峰摇摇晃晃,一跤摔倒在地
乔峰止步向前,招中套招,一招【劈挂连环】,连环攻击向美琪美雪。
结果美琪美雪摇摇晃晃,一跤摔倒在地
美琪美雪止步向前,招中套招,一招【劈挂连环】,连环攻击向乔峰。
结果乔峰一声惨叫,像一瘫软泥般塌了下去
乔峰使出一招【游空谈爪】,飞起身形自半空中变掌为爪锁向美琪美雪。
结果美琪美雪摇摇晃晃,一跤摔倒在地
美琪美雪运气于掌,一瞬间掌心变得血红,一式【掌心雷】推向乔峰。
结果乔峰一声惨叫,像一瘫软泥般塌了下去
美琪美雪KO乔峰
