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

HOMEWORD参考-W2LV2 博客分类: JingLuuJava  

程序员文章站 2024-02-26 11:14:52
...

内容要求

(在上一作业的基础上)

  • 勇士增加角色等级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());
		}

	}
}