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

HOMEWORD参考-W2LV2

 
阅读更多

内容要求

(在上一作业的基础上)

  • 勇士增加角色等级level属性
  • 勇士经验值累积到10、20、30、40、50……则等级分别升级到2、3、4、5、6……类推
  • (自我挑战,选做)把上一条改为:勇士经验值累积到10、30、70、150、310……则等级分别升级到2、3、4、5、6……类推

知识点或注意事项

  • 变量(对象级和方法级)的灵活使用
  • 基本算术素养训练(与编程语言无关,但程序员必备),必须完成第一条,鼓励挑战第二条,但如果第二条长时间做不出来那么要先跳过去完成下面的内容

 

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

class Warrior {

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

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

	void hunt(Rabbit rabbit) {
		int expFromRabbit = rabbit.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 Rabbit {
	private int exp;

	Rabbit() {
		exp = 3;
	}

	int getExp() {
		return exp;
	}
}

 

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

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());
		}

	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics