英雄战斗的游戏,请根据如下类图编写代码

生命类Life,提供初始化姓名和生命值的构造方法,提供战斗方法fight,将其生命值减1,并打印出"Life 战斗...",提供打印方法printInfo,打印出当前对象的姓名和生命值。
英雄类(Hero),提供带姓名、等级参数构造的构造方法,初始化姓名和生命值(英雄的生命值=等级*100),提供战斗的方法,将妖怪的生命值减2,并打印出"Hero 赤手空拳战斗...",传入绝世好剑,妖怪生命减5,传入倚天剑,妖怪生命减8,传入金箍棒,妖怪生命减10,并打印"Hero 用XXX战斗...".
妖怪类(Monster),提供构造函数初始化姓名和生命值,将生命值初始化为500,愤怒一次,愤怒值加1,每次战斗英雄减少的生命值(愤怒值*2),并打印"Monster 妖怪反击"
------解决方案--------------------
public class Life {
private String name;
private int bloodNum;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setBloodNum(int bloodNum) {
this.bloodNum = bloodNum;
}
public int getBloodNum() {
return bloodNum;
}
public Life(String name, int bloodNum) {
this.name = name;
this.bloodNum = bloodNum;
}
public void fight(Life life) {
bloodNum--;
System.out.println("Life战斗……");
}
public void printInfo() {
System.out.println("name is:"+ name +"bloodNum is:" + bloodNum);
}
}
public class Hero extends Life {
private int grade;
public Hero(String name, int grade) {
super(name, grade*100);
this.grade = grade;
}
public void fight(Monster monster) {
monster.setBloodNum(monster.getBloodNum()-2);
System.out.println("Hero赤手空拳战斗");
}
public void fight(Monster monster, String arms) {
if(arms.equals("绝世好剑")) {
monster.setBloodNum(monster.getBloodNum()-5);
System.out.println("Hero用绝世好剑战斗……");
} else if(arms.equals("倚天剑")) {
monster.setBloodNum(monster.getBloodNum()-8);
System.out.println("Hero用倚天剑战斗……");
} else if(arms.equals("金箍棒")) {
monster.setBloodNum(monster.getBloodNum()-10);
System.out.println("Hero用金箍棒战斗……");
}
}
}
public class Monster extends Life {
public int attackNum = 0;
public Monster(String name) {
super(name, 500);
}
public void anger() {
attackNum++;
}
public void fight(Hero hero) {
hero.setBloodNum(hero.getBloodNum()-attackNum*2);
System.out.println("Monster妖怪反击");
}
}