package test_3;

import java.util.Random;

public class Game { //属性 private String name; private int blood; private char gender; private String face;//长相是随机的。

String[] boyface = {"英俊潇洒","玉树临风" ," 平平无奇 " , "惨不忍睹"};
String[] grilface = {"沉鱼落雁" ,"倾国倾城" ,"平平无奇" ,"惨不忍睹" };

String[] attacks= {
"%s使出一个【扣屁股】,直接放到%s,朝他屁股扣去。",
"%s使出一招【抓头发】,直接抱着%s,抓着头发甩",
"%s大喊爸爸我错了,然后直接震碎%s的耳朵,",
"%s上步枪身,招中套招,一个【吐口水】,连连吐口向%s"
};

String[] injured = {
"结果%s退了半步,毫发无色",
"结果给%s造成一处瘀伤",
"结果一击命中,%s痛的弯下了腰",
"结果%s痛苦的趴在地上,显然受了点内伤。",
"结果轰的一声,%s趴着了地上,鲜血狂吐不止。",
"结果%s一声惨叫,像软泥一样到了下去",
};





public Game(){

}

public Game (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 == '男') {
int index=r.nextInt(boyface.length);

this.face=boyface[index];

}else {
int index=r.nextInt(grilface.length);

this.face=grilface[index];
}
}



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(Game role) {

Random r = new Random();

int index = r.nextInt(attacks.length);

String kungFu = attacks[index];

//输出一个攻击效果。
System.out.printf(kungFu,this.getName(),role.getName());//this.getName() 是打人者, role 是被打者。



//计算伤害1到20

int hurt = r.nextInt(20) + 1;

//剩余血量
int remainBlood = role.getBlood() - hurt;

//对剩余血量做个验证,避免出现负数现象。
remainBlood = remainBlood < 0 ? 0:remainBlood;

//修改一下挨揍的人的血量
role.setBlood(remainBlood);//要是去除这个,则每次攻击后血量会重现满血。


//受伤的描述。
//90~100 第一种情况。也就是第0索引。
//80~90 第二种受伤情况。 第1索引。
//....
//50及以下的 第5索引。


if (remainBlood > 90 && remainBlood<100) {
System.out.printf(injured[0],role.getName());//injured数组中的元素只含有1个%s所以后面就添加一个就行。
}else if (remainBlood > 80 && remainBlood<90)
{
System.out.printf(injured[1],role.getName());//injured数组中的元素只含有1个%s所以后面就添加一个就行。
}else if (remainBlood > 70 && remainBlood<80)
{
System.out.printf(injured[2],role.getName());//injured数组中的元素只含有1个%s所以后面就添加一个就行。
}else if (remainBlood > 60 && remainBlood<70)
{
System.out.printf(injured[3],role.getName());//injured数组中的元素只含有1个%s所以后面就添加一个就行。
}else if (remainBlood > 50 && remainBlood<60)
{
System.out.printf(injured[4],role.getName());//injured数组中的元素只含有1个%s所以后面就添加一个就行。
}else
{
System.out.printf(injured[5],role.getName());
}







//这里面的game role是 引用数据类型 引用game类里面的内容,role是自己设置的形参 。
//this 表示方法调用者。
System.out.println(this.getName() + "对" + role.getName() +
"造成了"+ hurt + "点伤害" + role.getName() + "剩下了" + remainBlood +"点血量");
}

public void show() {
System.out.println("姓名为:" + getName());
System.out.println("血量为:" + getBlood());
System.out.println("性别为:" + getGender());
System.out.println("长相为:" + getFace());
}

}



                                       java 测试版


package test_3;

public class gameTese {

public static void main(String[] args) {
//创建第一个角色,
Game r1 = new Game("小牛",100,'男');
//创建第二个角色。
Game r2 = new Game("高贵豪",100,'男');

//开始格斗。
r1.show();
r2.show();

while(true) {
//r1打r2
r1.attack(r2);
if(r2.getBlood() == 0) {
System.out.println(r1.getName() + "k.o了" + r2.getName());
break;
}
//r2打r1.
r2.attack(r1);
if(r1.getBlood() == 0) {
System.out.println(r2.getName() + "k.o了" + r1.getName());
break;
}
}

} }





                                                 运行效果图:  

姓名为:小牛

血量为:100

性别为:男

长相为: 平平无奇  

姓名为:高贵豪

血量为:100

性别为:男

长相为:惨不忍睹

小牛使出一招【抓头发】,直接抱着高贵豪,抓着头发甩结果高贵豪退了半步,毫发无色小牛对高贵豪造成了3点伤害高贵豪剩下了97点血量

高贵豪使出一招【抓头发】,直接抱着小牛,抓着头发甩结果给小牛造成一处瘀伤高贵豪对小牛造成了13点伤害小牛剩下了87点血量

小牛使出一个【扣屁股】,直接放到高贵豪,朝他屁股扣去。结果高贵豪一声惨叫,像软泥一样到了下去小牛对高贵豪造成了17点伤害高贵豪剩下了80点血量

高贵豪上步枪身,招中套招,一个【吐口水】,连连吐口向小牛结果给小牛造成一处瘀伤高贵豪对小牛造成了2点伤害小牛剩下了85点血量

小牛大喊爸爸我错了,然后直接震碎高贵豪的耳朵,结果高贵豪一声惨叫,像软泥一样到了下去小牛对高贵豪造成了10点伤害高贵豪剩下了70点血量

高贵豪上步枪身,招中套招,一个【吐口水】,连连吐口向小牛结果小牛痛苦的趴在地上,显然受了点内伤。高贵豪对小牛造成了19点伤害小牛剩下了66点血量

小牛使出一招【抓头发】,直接抱着高贵豪,抓着头发甩结果高贵豪痛苦的趴在地上,显然受了点内伤。小牛对高贵豪造成了4点伤害高贵豪剩下了66点血量

高贵豪使出一个【扣屁股】,直接放到小牛,朝他屁股扣去。结果小牛痛苦的趴在地上,显然受了点内伤。高贵豪对小牛造成了5点伤害小牛剩下了61点血量

小牛使出一个【扣屁股】,直接放到高贵豪,朝他屁股扣去。结果轰的一声,高贵豪趴着了地上,鲜血狂吐不止。小牛对高贵豪造成了15点伤害高贵豪剩下了51点血量

高贵豪上步枪身,招中套招,一个【吐口水】,连连吐口向小牛结果小牛一声惨叫,像软泥一样到了下去高贵豪对小牛造成了17点伤害小牛剩下了44点血量

小牛使出一个【扣屁股】,直接放到高贵豪,朝他屁股扣去。结果高贵豪一声惨叫,像软泥一样到了下去小牛对高贵豪造成了5点伤害高贵豪剩下了46点血量

高贵豪上步枪身,招中套招,一个【吐口水】,连连吐口向小牛结果小牛一声惨叫,像软泥一样到了下去高贵豪对小牛造成了10点伤害小牛剩下了34点血量

小牛上步枪身,招中套招,一个【吐口水】,连连吐口向高贵豪结果高贵豪一声惨叫,像软泥一样到了下去小牛对高贵豪造成了20点伤害高贵豪剩下了26点血量

高贵豪上步枪身,招中套招,一个【吐口水】,连连吐口向小牛结果小牛一声惨叫,像软泥一样到了下去高贵豪对小牛造成了13点伤害小牛剩下了21点血量

小牛大喊爸爸我错了,然后直接震碎高贵豪的耳朵,结果高贵豪一声惨叫,像软泥一样到了下去小牛对高贵豪造成了19点伤害高贵豪剩下了7点血量

高贵豪大喊爸爸我错了,然后直接震碎小牛的耳朵,结果小牛一声惨叫,像软泥一样到了下去高贵豪对小牛造成了14点伤害小牛剩下了7点血量

小牛上步枪身,招中套招,一个【吐口水】,连连吐口向高贵豪结果高贵豪一声惨叫,像软泥一样到了下去小牛对高贵豪造成了5点伤害高贵豪剩下了2点血量

高贵豪上步枪身,招中套招,一个【吐口水】,连连吐口向小牛结果小牛一声惨叫,像软泥一样到了下去高贵豪对小牛造成了14点伤害小牛剩下了0点血量

高贵豪k.o了小牛




                                  注意可以通过改名字达到那种好玩的效果。