JAVA开发,创建英雄与怪物类,查询经验值

创建英雄与怪物类

最近本人进行了一些java初阶练习,其中有一些挺有意思的题目,本人选择了这一道题目进行试手,现在把程序分享一下,方便广大跟我一样都在学习Java的同胞们一起相互交流,共同进步。

题目的内容

1、创建一个LOL中的英雄类和怪物类,要求:
怪物类中加入生命值属、等级属性,生命值=等级*1000
英雄类中加入“经验值”,“等级”,“攻击力”等属性变量,加入“击打”方法,击打的目标是怪物,击打的结果是怪物的生命值-英雄攻击力
2、自定义一个英雄类
英雄的级别最低为0,最高为30级,经验值最低为0,最高为30级时的经验值
该类中要求有一个含有参数的构造函数,参数为英雄的经验值,初始化时要保证经验值在要求范围之内,通过输入英雄等级查看英雄经验值:
N=当前级别,EXP(经验值)=30(N^3+5N)-80
构建一个无参的构造方法,将经验值设置为0
利用英雄类无参和带有参数的构造函数分别构建英雄对象,并输出英雄的等级和经验值。

接下来就是小弟献丑的时候了
1、创建一个LOL中的英雄类和怪物类,要求:
怪物类中加入生命值属、等级属性,生命值=等级*1000
英雄类中加入“经验值”,“等级”,“攻击力”等属性变量,加入“击打”方法,击打的目标是怪物,击打的结果是怪物的生命值-英雄攻击力
代码如下:

package work4;



public class Work040 {
    static class Hero{ //英雄类
        private String name;//英雄的名字
        private Integer experience;//经验值
        private Integer level; //英雄等级
        private Integer attack; //攻击力

        public Hero(String name){ //新建英雄的构造方法
            this.name = name;//输入名字
            this.experience = 0;//初始经验值为0
            this.level = 1;//初始等级为1
            this.attack = 100;//初始攻击力为100
        }

        public void AttackMonster(Monster monster){ //攻击怪物的方法
            System.out.println("英雄<"+this.name+">攻击怪物<"+monster.getName()+">造成"+this.attack+"点伤害");
            Integer hp = monster.getHealthPoint();//怪物被攻击前血量
            if (hp > this.attack) { //判断 如果怪物的血量大于攻击力
                hp = hp - this.attack;//怪物的血量 就减少攻击力的点数
            } else { //如果怪物的血量 等于或者小于攻击力
                hp = 0; //怪物血量为0 死亡
            }
            monster.setHealthPoint(hp); //改变怪物被攻击后的血量
            System.out.println("怪物剩余血量"+hp);
            if (hp == 0 && this.level <18){ //如果怪物死亡 且英雄等级没有达到最高的18级
                System.out.println("英雄<"+this.name+">的经验值增加"+monster.getExperience()+"点");
                this.experience = this.experience + monster.getExperience(); //英雄的经验值 增加
                if (this.experience >= level * 100){ //设定 英雄升级所需经验值为 等级*100  如果英雄增加后的经验值达到升级条件
                    this.experience = this.experience - level*100; //经验值减去当前升级需要的经验值 溢出的进入下一个等级经验
                    this.level = this.level + 1;//英雄等级 +1
                    this.attack = this.attack + 20; //设定 每升一级英雄攻击力 +20
                    System.out.println("英雄<"+this.name+">升级了,等级+1,攻击力+20,当前等级"+this.level+",当前攻击力"+this.attack);
                }
            }
        }

        //获取英雄名字的方法
        public String getName() {
            return name;
        }
        //改变英雄名字的方法
        public void setName(String name) {
            this.name = name;
        }

        //获取英雄当前经验值的方法
        public Integer getExperience() {
            return experience;
        }
        //改变英雄当前经验值的方法
        public void setExperience(Integer experience) {
            this.experience = experience;
        }
        //获取英雄当前等级的方法
        public Integer getLevel() {
            return level;
        }
        //改变英雄当前等级的方法
        public void setLevel(Integer level) {
            this.level = level;
        }
        //获取英雄当前攻击力的方法
        public Integer getAttack() {
            return attack;
        }
        //改变英雄当前攻击力的方法
        public void setAttack(Integer attack) {
            this.attack = attack;
        }
    }

    static class Monster{ //怪物类
        private String name; //怪物的名字
        private Integer healthPoint;//生命值
        private Integer level;//怪物等级
        private Integer experience; //怪物的经验值

        public Monster(String name,Integer level){ //创建怪物的构造方法 参数 名字,等级
            this.name = name; //初始化怪物的名字
            this.level = level; //初始化怪物的等级
            this.healthPoint = level * 1000; //初始化怪物的血量
            this.experience = level * 10;//初始化怪物的经验,英雄杀死后可获得,设定怪物经验值为等级*10
        }

        public Integer getHealthPoint() {
            return healthPoint;
        }

        public void setHealthPoint(Integer healthPoint) {
            this.healthPoint = healthPoint;
        }

        public Integer getLevel() {
            return level;
        }

        public void setLevel(Integer level) {
            this.level = level;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getExperience() {
            return experience;
        }

        public void setExperience(Integer experience) {
            this.experience = experience;
        }
    }
    public static void main(String[] args) throws Exception {
        Hero hero = new Hero("刘醒"); //新建一个英雄
        Monster monster = new Monster("梁非凡",1);//新建一个怪物
        do {
            hero.AttackMonster(monster); //攻击怪物
        }while (monster.getHealthPoint() != 0);  //如果怪物没死 一直攻击
    }

}

2、自定义一个英雄类
英雄的级别最低为0,最高为30级,经验值最低为0,最高为30级时的经验值
该类中要求有一个含有参数的构造函数,参数为英雄的经验值,初始化时要保证经验值在要求范围之内,通过输入英雄等级查看英雄经验值:
N=当前级别,EXP(经验值)=30(N^3+5N)-80
构建一个无参的构造方法,将经验值设置为0
利用英雄类无参和带有参数的构造函数分别构建英雄对象,并输出英雄的等级和经验值。
代码如下:

package work4;

import java.util.Scanner;

public class Work041 {
    public static void main (String[] args) {  

        int b=80;

        int l;  // 英雄等级  
        Scanner in = new Scanner(System.in); //从控制台输入英雄等级  
        System.out.println("请输入英雄等级查看英雄经验值:");//输入提示  
        l = in.nextInt();//输入的整数英雄等级赋值给l 
        //开始运算英雄经验值  
        if(l>0){ 
            if(l<=30) {  
                long exp = 30*(l*l*l) - b + 150*l;
                System.out.println("英雄等级"+l+" "+"英雄经验值 "+exp);  
            }
            else
              {System.out.println("英雄等级已满");}

        }     
    }  

}

以上就是小弟的牛刀小试,还需诸位大神多多指教

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值