课后习题10创建不同职业的英雄,加入战队,进行战斗,计算组队攻击伤害值。

这篇博客介绍了如何在游戏编程中创建法师和战士两种职业的英雄角色,详细说明了他们的攻击伤害计算方式,并展示了如何将角色加入队伍进行战斗。玩家可以选择职业,通过练习提升角色能力。最后,通过代码示例展示了如何计算组队攻击总伤害值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先职业有:法师   ,战士

法师:

攻击伤害值:法师等级 * 5;(法师等级为1 - 10)

可通过练习增加法师等级

战士:

攻击伤害值:基础伤害值加武器加成,如果遇到本名武器,伤害值加1000(武器名字和自己名字相同)

可通过练习增加基础伤害

附:组队成员不能超过6人

 

 

 

 

public class TestGame {

        static Scanner input = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println("欢迎进入游戏!!!");
        System.out.println("请选择你的职业:1.法师 2.战士");
        int i = input.nextInt();
        switch(i){
        case 1:
            NamedRole na = magicers();
            Magicer magicer2 = (Magicer)na;
            System.out.println("创建成功,您的名字为:" + magicer2.name);
            System.out.println("您的当前等级为:" + magicer2.getLevel());
            System.out.println("加入组队!");
            Team.addMember(magicer2);
            break;
        case 2:
            NamedRole na2 = soldiers();
            Soldier soldier2 = (Soldier)na2;
            System.out.println("创建成功,您的名字为:" + soldier2.name);
            System.out.println("您的当前伤害值为:" + soldier2.getDamage());
            System.out.println("加入组队!");
            Team.addMember(soldier2);
            break;
        default:
            System.out.println("咋回事,还想玩啥!!!");
            return;
        }
        
        Magicer magi1 = new Magicer();
        magi1.name = "渣男公民";
        magi1.setLevel(6);
        magi1.stick = new BlackStic();
        magi1.stick.fire();
        magi1.practise();
        Team.addMember(magi1);
        
        Magicer magi2 = new Magicer();
        magi2.name = "咕噜民";
        magi2.setLevel(7);
        magi2.stick = new BlackStic();
        magi2.stick.fire();
        magi2.practise();
        Team.addMember(magi2);
        
        Soldier sold1 = new Soldier();
        sold1.name = "海王公民";
        sold1.setDamage(10);
        sold1.weaon = new Bolo();
        sold1.weaon.setSoldier(sold1);
        sold1.weaon.fire();
        sold1.practise();
        Team.addMember(sold1);
        
        
        Soldier sold2 = new Soldier();
        sold2.name = "小钢丝球";
        sold2.setDamage(11);
        sold2.weaon = new Bolo();
        sold2.weaon.setSoldier(sold2);
        sold2.weaon.fire();
        sold2.practise();
        Team.addMember(sold2);
        
        System.out.println("加入成功:您的队友有:");
        System.out.println(magi1.name + "\t" + "等级 : " + magi1.getLevel() );
        System.out.println(magi2.name + "\t" + "等级 : " + magi2.getLevel() );
        System.out.println(sold1.name + "\t" + "伤害 : " + sold1.getDamage() );
        System.out.println(sold2.name + "\t" + "伤害 : " + sold2.getDamage() );
        System.out.println("是否进行团战:1.进行   2.不进行");
        int j = input.nextInt();
        switch(j){
        case 1 :
            int nums = Team.attackSum();
            System.out.println("团队输出为:" + nums);
            System.out.println("团战失败,你太菜了");
            break;
        case 2 :
            System.out.println("菜到不敢玩,垃圾");
            return;
        }
        


    }
    public static NamedRole magicers(){
        Magicer magicer = new Magicer();
        System.out.println("请输入您的游戏名称:");
        magicer.name = input.next();
        magicer.setLevel(5);
        magicer.stick = new BlackStic();
        magicer.stick.fire();
        magicer.practise();
        return magicer;
    }
    public static NamedRole soldiers(){
        Soldier soldier = new Soldier();
        System.out.println("请输入您的游戏名称:");
        soldier.name = input.next();
        soldier.setDamage(10);
        soldier.weaon = new Bolo();
        soldier.weaon.setSoldier(soldier);
        soldier.weaon.fire();
        soldier.practise();
        return soldier;
        
        /**
         * 量身定制武器加攻击值1000
         * 条件: 姓名和武器姓名要相同
         * 否则伤害为50;
         */

        /*Soldier sold2 = new Soldier();
        sold2.name = "小钢丝球";
        sold2.setDamage(11);
        sold2.weaon = new Pike();
        Pike p = (Pike)sold2.weaon;
        p.name = "小钢丝球";
        p.setSoldier(sold2);
        p.fire();
        sold2.weaon = p;
        System.out.println(sold2.attack());
        */
    }

}
class Month{//月份
    static int month = 10;
}
class Team {//队伍
    static NamedRole[] teams = new NamedRole[6];
    static int nums = 0;

    public static void addMember(NamedRole r) {

        teams[nums] = r;
        nums++;
    }

    public static int attackSum() {
        int add = 0;
        for (int i = 0; i < nums; i++) {
            add += teams[i].attack();
        }
        return add;
    }
}

class Magicer extends NamedRole {//法师-----------------------------------
    private static int level;
    MagicStick stick;//权杖
    

    public int getLevel() {
        return level;
    }

    public void setLevel(int level) {
        if (level >= 1 && level <= 10) {
            this.level = level;
        }

    }

    @Override
    public int attack() {

        return this.level * 5;
    }

    @Override
    public void practise() {
        if(stick == null){
            this.level++;
        }
        else if(stick != null){
            this.level = level + 1 + stick.fire(); 
        }
    }

}
class Green implements MagicStick{//法杖
    @Override
    public int fire() {
        if(Month.month >= 6 && Month.month <=8){
            return 2;
        }
        return 1;
    }
}
class BlackStic implements MagicStick{

    @Override
    public int fire() {
            if(Month.month % 2 != 0){
                return 1;
            }
        return 2;
    }
    
}


class Soldier extends NamedRole {//战士------------------------------------------------
    private int damage;//战士的伤害值
    Weapon weaon;//武器

    public int getDamage() {
        return damage;
    }

    public void setDamage(int damage) {
        this.damage = damage;
    }

    @Override
    public int attack() {
        return damage + weaon.fire();
    }

    @Override
    public void practise() {//每训练一次加10伤害值
        damage += 10;
        
    }

}
class Bolo implements Weapon{//武器-----------------------------
    Soldier n;
    @Override
    public void setSoldier(Soldier s) {
        n = s;
        
    }

    @Override
    public int fire() {
        if( n.age >= 18){
            return 100;
        }
        return 50;
    }
    
}
class Pike implements Weapon{//武器------------------------------------
    String name;//武器的名字
    Soldier nn;

    @Override
    public void setSoldier(Soldier s) {
        nn = s;
        
    }

    @Override
    public int fire() {
        if(this.name.equals(nn.name)){
            return 1000;
        }
        // TODO Auto-generated method stub
        return 25;
    }
    
}

abstract class NamedRole implements Roles {//角色父类-------------------------------------
    String name;
    int age;
    abstract public int attack();
    abstract public void practise();

}


 

 

 

 

public interface Roles{
    int attack();//攻击 ,会造成伤害,并返回伤害值
    void practise();//练习 ,会增加伤害
}
 

 

 

public interface MagicStick {
    int fire();//法杖的伤害
}
 

 

 

public interface Weapon {
    void setSoldier(Soldier s);
    int fire();
}
 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值