`
whatable
  • 浏览: 4269 次
  • 性别: 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());
		}

	}
}

 

分享到:
评论

相关推荐

    前端开源库-home-assistant-js-websocket

    **前端开源库-home-assistant-js-websocket** 在现代智能家居领域,`Home Assistant`是一个非常流行的开源自动化平台,它允许用户集成各种智能设备并实现个性化控制。`home-assistant-js-websocket`是专为`Home ...

    2022吴的机器学习C1-W2 Home Work:线性回归, 数据文件和应用的包.zip

    在这个"2022吴的机器学习C1-W2 Home Work"中,我们将使用线性回归来处理给定的数据文件,并探讨其在实际应用中的方法。 首先,让我们理解线性回归的基本概念。线性回归假设因变量(我们想要预测的变量)与一个或多...

    luci-app-adguardhome_1.8-20200824_all.zip

    《AdGuard Home与LuCI应用接口的深度解析》 在当今网络环境中,广告与恶意软件的威胁日益严重,用户对于网络安全的需求与日俱增。AdGuard Home作为一个强大的网络过滤工具,能够有效地拦截广告、跟踪器和其他潜在的...

    luci-app-adguardhome_1.8-11_all.ipk

    AdGuard Home 项目 是著名广告拦截器 AdGuard 里 DNS Server 的一个开源版本。该项目的原理是,在 DNS 的域名解析的过程里拦截网页上的广告。

    node-red-contrib-home-assistant-websocket:Node-RED与Home Assistant Core的集成

    $ npm install node-red-contrib-home-assistant-websocket # then restart node-red 对于附加用户: 随此节点提供的社区附加组件是开箱即用的。 在服务器节点配置下,只需选中I use the Home Assistant Add-on的...

    home-assistant-polymer, 用于家庭助理的聚合物前端.zip

    home-assistant-polymer, 用于家庭助理的聚合物前端 系列辅助聚合物 这是官方家庭助理前端的存储库。 前端是建立在以下技术之上的:web sockets聚合物汇总插件打包到 Home Assistant用于聚合物包管理的 Bower 对...

    ExcelHome-VBAHelper-1.1.2.2021.zip

    《Excel VBA神器:深入解析ExcelHome-VBAHelper-1.1.2.2021.zip》 在Excel的世界里,VBA(Visual Basic for Applications)无疑是一种强大的工具,它允许用户通过编写代码来自动化复杂的任务,提高工作效率。Excel...

    ExcelHome-eztools-2.5.138.2024.zip

    适配文章:Excel多表格合并

    Win10Home安装Hyper-V功能虚拟机Docker调试必备

    Win10Home安装Hyper-V功能虚拟机Docker调试必备

    完整word版-常用的Excel快捷键大全-推荐文档.doc

    - Home:移动到当前行的开始位置。 - Ctrl+Home:移动到工作表的第一个单元格。 - Ctrl+End:移动到工作表的最后一个单元格。 - Page Down:向下滚动一屏幕。 - Page Up:向上滚动一屏幕。 - Alt+Page Down:...

    Python库 | home-assistant-frontend-20210802.0.tar.gz

    标题中的"Python库 | home-assistant-frontend-20210802.0.tar.gz"表明这是一个针对Python开发的库,名为home-assistant-frontend,版本号为20210802.0,且已打包成tar.gz格式的压缩文件。这种格式通常用于在Linux和...

    zigbee-home-automation-1-2

    Webinar_docs-13-0367-00-0mwg-zigbee-home-automation-1-2-delivering-peace-of-mind-through-secure-and-energy-efficient-homes.pdf

    Word模板-办公软件常用快捷键.doc

    "Word模板-办公软件常用快捷键" 在日常办公中,掌握常用的快捷键可以大大提高工作效率。本文档整理了Office Word中常用的快捷键,包括基本操作、文字编辑、格式设置、查找替换、插入超链接等多方面的快捷键。 基本...

    HomeAssistant windows Hyper-V 虚拟机镜像

    HomeAssistant windows Hyper-V 虚拟机镜像 官网下载较慢,特提供本下载地址。

    WORD快捷键-个人搜集

    在日常办公中,熟练掌握Word快捷键能够极大地提升工作效率。这里我们来详细探讨一下标题和描述中提到的一些Word快捷键,并结合文件的部分内容进行解析。 首先,我们要了解快捷键的基本作用,它们是为了让我们在操作...

    Python库 | home-assistant-frontend-20190911.1.tar.gz

    《Python库:深入理解home-assistant-frontend-20190911.1》 在Python的世界里,库是构建复杂应用的基础模块,它们提供了丰富的功能,使得开发者能够高效地实现各种任务。"home-assistant-frontend-20190911.1.tar....

    PyPI 官网下载 | dlg_home_content-0.0.5-py3-none-any.whl

    标题中的"PyPI 官网下载 | dlg_home_content-0.0.5-py3-none-any.whl"指的是一个在Python Package Index (PyPI) 官网上发布的软件包。PyPI是Python社区用来分发开源软件的主要平台。"dlg_home_content-0.0.5-py3-...

    完整word版-ASPNET35开发大全第17章.doc

    比如,"/home/abc"可能映射到名为Home的控制器中的一个名为Abc的方法,而不是实际的"abc.aspx"文件。这种URL路由机制允许更灵活的URL构造,有助于SEO(搜索引擎优化),因为搜索引擎通常更喜欢静态或目录式的URL结构...

    sqlite-.rar_Home Home_cross-2.95.3.tar._makefile sqlite_sqlite_s

    首先建立交叉编译环境,安装cross-2.95.3.tar.bz2交叉编译工具到/usr/arm-linux目录下,修改/home/sqlite-3.3.8目录下的configure文件的部分内容,将Makefile文件中的部分内容,设置交叉编译环境,再编译并安装,就...

    前端开源库-home-assistant-js-websocket.zip

    "home-assistant-js-websocket" 是一个专门为前端开发者设计的开源库,用于与Home Assistant智能家居系统进行交互。这个库利用WebSocket协议,实现了高效且实时的双向通信,使得前端应用程序能够轻松地控制和获取...

Global site tag (gtag.js) - Google Analytics