Java 法师与战士

//父类

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<i;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);
}

}

转载于:https://my.oschina.net/u/3715009/blog/1573371

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值