s15443
2021-05-21 14:45
采纳率: 100%
浏览 107
已采纳

用java语言编写程序,不会写,跪求大佬帮忙看看这道题该怎么写?

表示射手的接口名为Adc,包含名为shoot的行为,表示一次射击造成若干伤害。不同的射手shoot造成的伤害不同,弓箭手每次伤害为10,飞镖客每次伤为12,害枪手每次为18,炮手每次伤害为30。

定义一个静态方法Kill表示不同射手攻击某目标的过程,设定目标的生命值,射手循环进行射击,直到目标生命值为0。

用类分别表示不同类型的射手,并用多态定义和调用Kill方法。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • hweiyu00 2021-05-21 16:27
    已采纳
    /**
     * ADC
     */
    public abstract class Adc {
    
        /**
         * 伤害
         */
        public abstract Integer getHurt();
    
        /**
         * 射击
         * @param life 生命值
         */
        public void shoot(int life) {
            int hurt = this.getHurt();
            int count = 0;
            for (int i = 0; i < life; i += hurt) {
                System.out.println("第" + (++count) + "次射击");
            }
        }
    }
    
    /**
     * 弓箭手
     */
    public class Archer extends Adc {
    
        @Override
        public Integer getHurt() {
            return 10;
        }
    
        @Override
        public void shoot(int life) {
            System.out.println("弓箭手开始射击");
            super.shoot(life);
            System.out.println("弓箭手结束射击");
        }
    }
    
    /**
     * 飞镖客
     */
    public class FlyingEscort extends Adc {
    
        @Override
        public Integer getHurt() {
            return 12;
        }
    
        @Override
        public void shoot(int life) {
            System.out.println("飞镖客开始射击");
            super.shoot(life);
            System.out.println("飞镖客结束射击");
        }
    }
    
    /**
     * 炮手
     */
    public class Gunner extends Adc {
    
        @Override
        public Integer getHurt() {
            return 30;
        }
    
        @Override
        public void shoot(int life) {
            System.out.println("炮手开始射击");
            super.shoot(life);
            System.out.println("炮手结束射击");
        }
    }
    
    /**
     * 害枪手
     */
    public class Shooter extends Adc {
    
        @Override
        public Integer getHurt() {
            return 18;
        }
    
        @Override
        public void shoot(int life) {
            System.out.println("害枪手开始射击");
            super.shoot(life);
            System.out.println("害枪手结束射击");
        }
    }
    
    /**
     * Kill
     */
    public class Kill {
    
        public static void kill(int life, Adc adc) {
            adc.shoot(life);
        }
    
        public static void main(String[] args) {
            int life = 100;
            
            kill(life, new Archer());
    
            System.out.println();
            
            kill(life, new FlyingEscort());
    
            System.out.println();
    
            kill(life, new Gunner());
    
            System.out.println();
    
            kill(life, new Shooter());
        }
    }
    已采纳该答案
    2 打赏 评论
  • CSDN专家-sinjack 2021-05-21 15:11

    自己多想想,没思路,再来问,,

    打赏 评论
  • 有问必答小助手 2021-05-25 14:41

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    打赏 评论

相关推荐 更多相似问题