设计需求:

(1)怪物的共有的属性有:名称、血量、攻击力、防御力;共有的方法有:显示属性、判定是否死亡、和攻击

(2)设置两种怪物:独眼巨人,树怪,英雄

(3)独眼巨人特有的属性有:武器(狼牙棒或钉锤);独眼巨人具有的攻击方法是:使用武器(狼牙棒或钉锤)攻击

(4)树怪特有的属性:高度;树怪的攻击方式是使用树枝缠绕攻击

(5)英雄攻击方式为王之藐视

(5)创建2只独眼巨人和1只树怪的对象和1名英雄,放入集合中,并轮流攻击集合中的下一个对象(0攻击1,1攻击2,2攻击0),直到只剩下一只怪物存活

(6)伤害值计算公式为:攻击者攻击力-被攻击者防御力,被攻击者的血量会要扣减调伤害值

(7)死亡判定规则为:血量小于等于0

怪兽父类:

public class Monster {
    public String name;
    public int hp;
    public int power;
    public int defence;
    public Monster(String name, int hp, int power, int defence) {
        super();
        this.name = name;
        this.hp = hp;
        this.power = power;
        this.defence = defence;
    }
    public void show() {
        System.out.print("怪物名称:"+name);
        System.out.print(" ;血量:"+hp);
        System.out.print(" ;攻击力:"+power);
        System.out.print(" ;防御力: "+defence);
    }
    public boolean dead(Monster monster) {
        return hp<=0;
    }
    public void attacMode(Monster monster) {
        int harm = this.power-monster.defence;
        monster.hp -=harm;
        System.out.println("进行攻击,对"+monster.name+"造成"
                    +harm+"点伤害");
    }
}

独眼巨人类:

public class Monser1 extends Monster{
    String arm;
    public Monser1(String name, int hp, int power, int defence,String arm) {
        super(name, hp, power, defence);
        this.arm = arm;
    }
    
    public void attacMode(Monster monster) {
        System.out.print(name+"使用 "+arm+" ");
        super.attacMode(monster);
    }
    
    public void show() {
        super.show();
        System.out.println("  ;武器:"+arm);
    }
}

 

树精类:

public class Monser2 extends Monster{

    double Height;
    
    public Monser2(String name, int hp, int power, int defence,double Height) {
        super(name, hp, power, defence);
        this.Height = Height;
    }
    
    public void attacMode(Monster monster) {
        System.out.print(name+"使用 树枝缠绕 ");
    }
    
    public void show() {
        super.show();
        System.out.println("  ;高度:"+Height);
    }

}

英雄类:

public class Hero extends Monster {

    public Hero(String name, int hp, int power, int defence) {
        super(name, hp, power, defence);
    }
    
    public void attacMode(Monster monster) {
        System.out.print(name+"使用 王之藐视 ");
        super.attacMode(monster);
    }

}

 

测试类:

import java.util.ArrayList;
import java.util.List;

public class Demo {

    public static void main(String[] args) {
        List<Monster> list = new ArrayList<Monster>();
        list.add(new Monser1("独眼巨人凯特", 50, 10, 5, "咖喱棒"));
        list.add(new Monser2("树怪盖亚", 75, 8, 6, 2.8));
        list.add(new Monser1("独眼巨人卡姆", 50, 11, 4, "狼牙棒"));
        list.add(new Hero("英雄王子", 500, 20, 5));
        for (int i = 0; i < list.size(); i++) {
            list.get(i).show();
        }
        int i = 0;
        while(list.size()>1) {
            Monster attacter = list.get(i);
            Monster hamer = list.get((i+1)%list.size());
            attacter.attacMode(hamer);
            if(hamer.dead(hamer)){
                System.out.println(hamer.name+"被击败");
                list.remove(hamer);
            }
            i = (i+1)%list.size();
        }
        System.out.println(list.get(0).name+"获得胜利");
        list.get(0).show();
    }
}

 

版权声明:本文为czsy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/czsy/p/8847591.html