1、创建一个LOL中的英雄类和怪物类,要求:
怪物类中加入生命值属、等级属性,生命值=等级*1000
英雄类中加入“经验值”,“等级”,“攻击力”等属性变量,加入“击打”方法,击打的目标是怪物,击打的结果是怪物的生命值-英雄攻击力
2、自定义一个英雄类
英雄的级别最低为0,最高为30级,经验值最低为0,最高为30级时的经验值
该类中要求有一个含有参数的构造函数,参数为英雄的经验值,初始化时要保证经验值在要求范围之内,通过经验值计算英雄的级别,英雄的级别计算公式如下:
N=当前级别,EXP(经验值)=30(N^3+5N)-80
构建一个无参的构造方法,将经验值设置为0
利用英雄类无参和带有参数的构造函数分别构建英雄对象,并输出英雄的等级和经验值。
Hero类代码
package chp6;
public class Hero {
int life;
int Lv;
int exp;
int strength;
static int[] map=new int[31];
static{
map[0]=0;
for(int i=1;i<=30;i++)
map[i]=30*(i*i*i+5*i)-80;
}
public Hero(){
this.exp=0;
this.Lv=1;
this.strength=10;
}
public Hero(int exp) {
this();
if(exp>map[30]||exp<map[0]) {System.out.println("invaild exp");return;}
this.exp = exp;
int i;
for(i=1;i<=30;i++)
if(map[i]>exp) break;
this.Lv=i;
this.strength=Lv*50;
}
public void hit(Monster m){
m.life = m.life - this.strength;
}
@Override
public String toString() {
return "Hero [life=" + life + ", Lv=" + Lv + ", exp=" + exp + ", strength=" + strength + "]";
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Hero h1 = new Hero();
Hero h2 = new Hero(1000);
Monster m = new Monster(5);
System.out.println(m+" "+h1);
System.out.println("h1 hit m");
h1.hit(m);
System.out.println(m);
System.out.println(m+" "+h2);
System.out.println("h2 hit m");
h2.hit(m);
System.out.println(m);
}
}
```java
Monster类
package chp6;
public class Monster {
int life;
int Lv;
public Monster(int Lv) {
this.Lv = Lv;
life=Lv*1000;
}
@Override
public String toString() {
return "Monster [life=" + life + ", Lv=" + Lv + "]";
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Monster m = new Monster(10);
System.out.println(m);
}
}