`
whatable
  • 浏览: 4181 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

HOMEWORD参考-W2LV

阅读更多

内容要求

(在上一作业的基础上)

  • 增加狼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());
		}

	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics