package day528.pdf6.pdf6t17;
/**
* Description: 所有职业的父类
* date: 2024/5/30 23:01
* @author: LiCoffee
* @since JDK 1.8
*/
public class Role {
private String name;//名字
public Role() {
}
public Role(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* @descriptions 计算角色的攻击对敌人的伤害
* @author LiCoffee
* @date 2024/5/30 23:03
* @return -角色的攻击对敌人的伤害
**/
public int attack(){
return 0;
}
}
package day528.pdf6.pdf6t17;
/**
* Description: 法师Magicer
* date: 2024/5/30 23:06
* @author: LiCoffee
* @since JDK 1.8
*/
public class Magicer extends Role{
private int level;//魔法等级(范围为1 ~ 10)
private final int baseHurt = 5;//魔法基本伤害值(固定为5)
public Magicer() {
}
public Magicer(String name, int level) {
super(name);
this.level = level;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
/*
判断魔法等级是在(范围为1 ~ 10)
*/
if (level > 10) {
this.level = 10;
}else if (level < 1) {
this.level = 1;
}else {
this.level = level;
}
}
//重写父类attack()方法
@Override
public int attack() {
return super.attack() + getLevel() * baseHurt;
}
}
package day528.pdf6.pdf6t17;
/**
* Description: Soldier战士
* date: 2024/5/30 23:06
* @author: LiCoffee
* @since JDK 1.8
*/
public class Soldier extends Role{
private int hurt;//攻击伤害值
public Soldier() {
}
public Soldier(String name, int hurt) {
super(name);
this.hurt = hurt;
}
public int getHurt() {
return hurt;
}
public void setHurt(int hurt) {
this.hurt = hurt;
}
//重写父类attack()方法
@Override
public int attack() {
return super.attack() + getHurt();
}
}
package day528.pdf6.pdf6t17;
/**
* Description: Team组队
* date: 2024/5/30 23:13
* @author: LiCoffee
* @since JDK 1.8
*/
public class Team {
private final int maxPeoNum = 6;//组队成员最多为6 人
private int nowPeoNum = 0;//当前队伍人数,标记方便遍历,防止空指针异常
private Role[] roles = new Role[maxPeoNum];
public Team(Role[] roles) {
if (roles.length > maxPeoNum - nowPeoNum) {//判断加队人数是否大于最大人数
System.out.println("不好意思,超出队伍最大人数,最大人数为6");
}else{
nowPeoNum += roles.length;//当前队伍人数+新队伍人数
System.arraycopy(roles,0,this.roles,0,roles.length); //调用System.arraycopy,将新队伍加入
}
}
public Role[] getRoles() {
return roles;
}
public void setRoles(Role[] roles) {
if (roles.length > maxPeoNum - nowPeoNum) {//判断加队人数是否大于最大人数
System.out.println("不好意思,超出队伍最大人数,最大人数为6");
}else{
nowPeoNum += roles.length;//当前队伍人数+新队伍人数
System.arraycopy(roles,0,this.roles,0,roles.length);
}
}
/**
* @descriptions 表示组队增加一个成员。
* @author LiCoffee
* @date 2024/5/30 23:20
* @param role -职业
**/
public void addMember(Role role){
if(nowPeoNum == maxPeoNum){
System.out.println("不好意思,队伍已满,最大人数为6");
}else {
this.roles[nowPeoNum] = role;
nowPeoNum += 1;//当前队伍人数+1
}
}
/**
* @descriptions 表示组队所有成员进行攻击时,对敌人造成的总伤害值
* @author LiCoffee
* @date 2024/5/30 23:23
* @return toatlHurt -对敌人造成的总伤害值
**/
public int attackSum(){
int toatlHurt = 0;
for (int i = 0; i < nowPeoNum; i++) {
toatlHurt += this.roles[i].attack();
}
return toatlHurt;
}
}
public class Test {
public static void main(String[] args) {
Role[] roles = {new Magicer("s",1),new Soldier("d",10)};
Team team = new Team(roles);
System.out.println("总伤害:");
System.out.println(team.attackSum());
System.out.println("================");
System.out.println("加入一个人");
team.addMember(new Soldier("f",20));
System.out.println(team.attackSum());
}
}
如果感觉有收获的话,点个赞 👍🏻 吧。
❤️❤️❤️本人菜鸟修行期,如有错误,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
因篇幅问题不能全部显示,请点此查看更多更全内容