您的位置:首页 > 编程语言 > Java开发

吉软_Java57_第九次作业

2017-11-13 21:42 120 查看
原文链接:https://www.geek-share.com/detail/2721502559.html

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,表示组队所有成员进行攻击时,对敌人造成的总伤害值 省略 get/set 方法后的类图如下:

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

 

package org.jsoft.text;

public abstract class Role {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public abstract String attack();
}

package org.jsoft.text;

public class Magicer extends Role{

    private int level;
    
    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        this.level = level;
    }
    public Magicer(int level){
        this.level=level;
    }

    @Override
    public String attack() {
        // TODO Auto-generated method stub
        return getName()+"的伤害值为:"+getLevel()*5;
    }

}

package org.jsoft.text;

public class Soldier extends Role{
    private int hurt;

    public int getHurt() {
        return hurt;
    }

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

    @Override
    public String attack() {
        // TODO Auto-generated method stub
        return getName()+"的伤害值为:"+getHurt();
    }
}

package org.jsoft.text;

public class Team {
    
    public String attackSum(){
        String Sum = "";
        for(int j=0;j<i;j++){
            Sum=Sum+p[j].attack();
            }
        return Sum;    
    }
    
    Role []p=new Role[6];
    int i=0;
    
    public void addMember(Role role){
        if(i<7){
            p[i++]=role;
        }else{
            System.out.println("人数已满");
        }
        
    }
}

package org.jsoft.text;

import java.util.Scanner;

public class TextRole {
    public static void main(String[] args) {
        Role r=new Magicer(3);
        r.setName("法师");
        System.out.println(r.attack());
        
        Role r1=new Soldier(4);
        r1.setName("战士");
        System.out.println(r1.attack());
        
        Team t=new Team();
        t.addMember(r);
        t.addMember(r1);
        System.out.println("总攻击伤害为:"+t.attackSum());
    
        
        
    }    
}

//结果

法师的伤害值为:15
战士的伤害值为:4
总攻击伤害为:法师的伤害值为:15战士的伤害值为:4

 

转载于:https://www.geek-share.com/detail/2721502559.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: