欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

HOMEWORD参考-W2LV 博客分类: JingLuuJava  

程序员文章站 2024-02-26 11:28:04
...

内容要求

(在上一作业的基础上)

  • 增加狼Wolf、熊Bear、龙Dragon等可以被勇士杀死获得经验值的若干动物,建议它们的经验值依次是8、20、100
  • 杀死每种动物能获得的经验值,你应该确保是由具体每一种动物对象来定义,而不是在勇士类中定义

知识点或注意事项

  • 变量(属性)定义在合适的类里面,例如杀死狼获得8点经验值,这个数值应该由狼对象来提供,而不是由熊或龙,更不应该由勇士类提供
  • 继承,父类和子类

以下为参考实现,从Run类执行

class Warrior {

	private int exp;// 除非有充分的理由,否则成员变量都要声明为private
	private int level;

	Warrior() {
		// 建议的做法,在构造方法中合理初始化各个成员变量
		exp = 0;
		level = 1;
	}

	void hunt(Animal animal) {
		int expFromRabbit = animal.getExp();// 杀死一只兔子获得的经验值
		int newestExp = exp + expFromRabbit;// 最新的经验值数值(注意还没有写到exp变量)
		int newestLevel = expToLevel(newestExp);// 最新的等级值(注意还没有写到level变量)

		exp = newestExp;
		if (newestLevel > level) {
			// 升级了
			level = newestLevel;
			System.out.println("勇士升级,等级" + level);
		}
	}

	int expToLevel(int exp) {
		int lv = 1;
		int e = 10;

		while (exp >= e) {
			lv = lv + 1;
			int v = lv;
			int x = 1;
			while (v > 1) {
				v = v - 1;
				x = x * 2;
			}
			e = (x * 2 - 1) * 10;
		}
		return lv;
	}

	int getExp() {
		return exp;
	}
}

 

class Animal {
	protected int exp;

	int getExp() {
		return exp;
	}
}

 

class Rabbit extends Animal {
	Rabbit() {
		exp = 3;
	}
}

 

class Wolf extends Animal {
	public Wolf() {
		exp = 8;
	}
}

 

class Bear extends Animal {
	public Bear() {
		exp = 20;
	}
}

 

class Dragon extends Animal {
	public Dragon() {
		exp = 100;
	}
}

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Run {
	private static final BufferedReader R = new BufferedReader(new InputStreamReader(System.in));

	public static void main(String[] args) throws IOException, InterruptedException {
		Warrior w = new Warrior();
		// 输入q或Q退出程序,输入其他任意内容则勇士都会猎杀一只兔子
		while (!"q".equalsIgnoreCase(R.readLine())) {
			w.hunt(new Rabbit());
			System.out.println("勇士猎杀了一只兔子,当前经验值" + w.getExp());
			w.hunt(new Wolf());
			System.out.println("勇士猎杀了一只狼,当前经验值" + w.getExp());
			w.hunt(new Bear());
			System.out.println("勇士猎杀了一只熊,当前经验值" + w.getExp());
			w.hunt(new Dragon());
			System.out.println("勇士猎杀了一条龙,当前经验值" + w.getExp());
		}

	}
}