java 2018.6.3 作业

5, (封装、继承、多态)创建三个类,组成一个继承树,表示游戏中的角色。

描述如下:

父类: 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,表示组队所有成员进行攻击时,对敌人造成的总伤害值 

根据类图和描述,创建相应的类。并编写相应的测试代码。

Role.java

package org.zy.homework;

public abstract class Role {

    public Role(String name) {
        this.name=name;
    }
    private  String name="player";
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public abstract int attack();
}

Magicer.java

package org.zy.homework;

public class Magicer extends Role {

    private int level;
    public Magicer(String name) {
        super(name);
    }
    public int getLevel() {
        return level;
    }
    public void setLevel(int level) {
        this.level = level;
    }
    @Override
    public int attack() {
        // TODO Auto-generated method stub
        return getLevel()*5;
    }

}

Soldier.java

package org.zy.homework;

public class Soldier extends Role{
    public Soldier(String name) {
        super(name);
    }

    private int hurt;
    
    public int getHurt() {
        return hurt;
    }

    public void setHurt(int hurt) {
        this.hurt = hurt;
    }

    @Override
    public int attack() {
        // TODO Auto-generated method stub
        return getHurt();
    }

}

Team.java

package org.zy.homework;

public class Team {

    int i=0;
    Role[] person=new Role[6];
    public void addMember(Role role) {
        for(i=0;i<6;i++) { 
            person[i]=role;
        }
        
    }
    public int attackSum() {
        
        int sum=0;
        for(i=0;i<6;i++) {
            sum=sum+person[i].attack();
        }
        return sum;
    }
}

Text.java

package org.zy.homework;

public class Text {

    public static void main(String[] args) {
        Team t=new Team();
        Role m=new Magicer("m1");
        Role s=new Soldier("s1");
        Magicer m1=(Magicer)m;
        Soldier s1=(Soldier)s;
        m1.setLevel(5);
        s1.setHurt(6);
        for(int i=0;i<2;i++) {
        t.addMember(m1);
        }
        for(int i=0;i<4;i++) {
            t.addMember(s1);
        }
        System.out.println("总伤害值为"+t.attackSum());
    }

}
;

转载于:https://my.oschina.net/u/3858480/blog/1826097

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值