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了小牛
注意可以通过改名字达到那种好玩的效果。