描述如下:
父类:Role。是所有职业的父类。
属性:name,表示角色的名字。
方法:public int attack(),该方法返回值为角色的攻击对敌人的伤害。
Role 有两个子类:
1) 法师Magicer
属性:魔法等级(范围为1 ~ 10)
方法:
public int attack(),该方法返回法师的攻击对敌人造成的伤害值。
法师攻击伤害值为:魔法等级*魔法基本伤害值(固定为5)
2) 战士Soldier
属性:攻击伤害值
方法:
public int attack(),该方法返回战士的攻击对敌人造成的伤害值。
战士的攻击伤害值为:其攻击伤害属性值
注意:上述的三个类所有属性都应当作为私有,并提供相应的get/set 方法。
再设计一个Team 类,表示一个组队。具有如下方法
1) addMember,表示组队增加一个成员。注意:组队成员最多为6 人
提示:应当利用一个数组属性,保存所有成员
2) attackSum,表示组队所有成员进行攻击时,对敌人造成的总伤害值
省略 get/set 方法后的类图如下:
package 附加题.Game;
public abstract class Role {
private String name;
public abstract int attack();
//获得名字
public String getName() {
return name;
}
@Override
public String toString() {
return "name='" + name + '\''+",";
}
//设置名字
public void setName(String name) {
this.name = name;
}
}
package 附加题.Game;
public class Magicer extends Role{
private int level;
public int getLevel() {
return level;
}
@Override
public String toString() {
return "Magicer{" +super.toString()+
"level=" + level +
'}';
}
//设置魔法等级
public void setLevel(int level) {
if (level<=10&&level>=1){
this.level = level;
}else return;
}
//魔法师伤害数值
@Override
public int attack() {
return level*5;
}
}
package 附加题.Game;
public class Soldier extends Role{
private int hurt;
public void setHurt(int hurt) {
this.hurt = hurt;
}
//战士伤害
@Override
public int attack() {
return hurt;
}
@Override
public String toString() {
return "Soldier{" +super.toString()+
"hurt=" + hurt +
'}';
}
}
package 附加题.Game;
public class Team {
private Role[] roles=new Role[6];
private int i=0;
//添加成员模块
public void addMember(Role role){
if (this.i<=6){
roles[i]=role;
this.i++;
}else return;
}
//总伤害模块
public int attackSum(){
int sum=0;
for (Role role:roles) {
if (role instanceof Magicer){
Magicer magicer=(Magicer)role;
sum+=magicer.attack();
}else if (role instanceof Soldier){
Soldier soldier=(Soldier)role;
sum+=soldier.attack();
}else continue;
}
return sum;
}
//统计成员模块
public void members(){
int i=0;
Role[] roles=new Role[6];
for (Role role:this.roles) {
if (role instanceof Magicer){
Magicer magicer=(Magicer)role;
roles[i]=magicer;
i++;
}else if (role instanceof Soldier){
Soldier soldier=(Soldier)role;
roles[i]=soldier;
i++;
}else break;
}
for (Role role:roles) {
if (role!=null) {
System.out.println(role);
}else break;
}
}
}
package 附加题.Game;
public class Player {
public static void main(String[] args) {
//创建魔法师、战士、队伍的对象
Magicer magicer = new Magicer();
Soldier soldier = new Soldier();
Team team = new Team();
//设置魔法师的名字和
magicer.setName("甘道夫");
magicer.setLevel(5);
soldier.setName("战士");
soldier.setHurt(90);
//把成员加入队伍
team.addMember(magicer);
team.addMember(soldier);
//列出小组成员
System.out.println("该小队成员为:");
team.members();
//列出小组的伤害
System.out.print("该小队伤害为:");
System.out.print(team.attackSum());
}
}