//父类
public abstract class Role {//抽象类
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Role(){
}
public abstract int attack();//父类的抽象方法
}
//子类
//法师
public class Magicer extends Role {
private int lv;
public int getLv() {
return lv;
}
public Magicer(String name,int lv){
super.setName(name);//将传递进来的参数赋值给父类的name
this.lv=lv;
}
public Magicer(){
}
public void setLv(int lv) {
this.lv = lv;
}
public int attack(){
return getLv()*5;//计算法师的伤害
}
}
//战士
public class Soldier extends Role {
private int hurt;
public int getHurt() {
return hurt;
}
public void setHurt(int hurt) {
this.hurt = hurt;
}
public Soldier(){
}
public Soldier(String name,int hurt){
super.setName(name);//将传递进来的name参数赋值给父类的name中
this.hurt=hurt;
}
public int attack(){//计算战士的伤害
return getHurt();
}
}
//team类
public class Team {
Role [] r=new Role [6];//创建Role 类型的数组对象
int i=0;
int sum=0;
public void addMember(Role role ){
if(i<6){ //超过六个则不再添加
r[i]=role;//将参数的值赋值给第i+1个数组。
i++;
}
else{
System.out.println("组队人数已达上限。");
}
}
public int attackSum(){
for(int j=0;j
sum+=r[j].attack();//计算伤害的总和。
}
return sum;
}
}
//测试类
import java.util.Scanner;
public class Test {
//多态。
Role rm=new Magicer();
Role rs=new Soldier();
Magicer m=new Magicer();
Soldier s=new Soldier();
Team t=new Team();
Scanner sc=new Scanner(System.in);
boolean a=true;
public static void main(String[] args) {
Test t1=new Test();
t1.add();//调用创建角色的方法
}
public void add(){//创建角色的方法
do{
System.out.println("请输入你要创建的角色:战士or法师");
String str=sc.next();
if(str.equals("法师")){//创建法师的语句
System.out.println("请创建法师的名字:");
String name1=sc.next();
rm.setName(name1);//将name赋值给法师类中的名字
System.out.println("法师的等级:");
int lv=sc.nextInt();
m.setLv(lv);//将lv赋值给法师类中的等级
System.out.println("成功创建"+m.getLv()+"级的法师"+rm.getName()+"\n其伤害值为:"+m.attack());
System.out.println("是否继续创建:");
String str1=sc.next();
if(str1.equals("是")){
a=true;
}else{
a=false;
}
}else if(str.equals("战士")){//创建战士的语句
System.out.println("请创建战士的名字及其攻击力:");
String name2=sc.next();
int hurt=sc.nextInt();
rs.setName(name2);
s.setHurt(hurt);
System.out.println("成功创建战士"+rs.getName()+"\n其伤害值为:"+s.attack());
System.out.println("是否继续创建:");
String str1=sc.next();
if(str1.equals("是")){
a=true;
}else{
a=false;
}
}
else{
System.out.println("输入有误请重新输入");
}
}while (a);
System.out.println("组队可以升级更快");
do{//循环语句来添加队友
System.out.println("是否开启组队功能继续添加名队友?");
String add=sc.next();
if(add.equals("是")){
System.out.println("请输入你要组队人物的职业:");
String type=sc.next();
if(type.equals("法师")){
System.out.println("请输入该法师的姓名及等级:");
String name=sc.next();
int lv=sc.nextInt();
Magicer m1=new Magicer(name,lv); //将名字和等级赋值给Magicer类中带有参数name和lv的的方法
t.addMember(m1);
t.attackSum();
}
else{
System.out.println("请输入该战士的姓名和攻击力:");
String name =sc.next();
int hurt=sc.nextInt();
Soldier s1=new Soldier(name,hurt);//同法师一样
t.addMember(s1);
t.attackSum();
}}
else{
System.out.println("该队伍的总伤害为:"+t.attackSum()) ;//输出伤害的总和
System.out.println("适当放松,请勿沉迷游戏");
break;
}}while(true);
}
}