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

用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条)

报告相同问题?