[基础题] 5.(*)按如下要求编写Java应用程序:(1)编写一个用于表示战斗能力的接口Fightable,

/*5.(*)按如下要求编写Java应用程序:
(1)编写一个用于表示战斗能力的接口Fightable,
该接口包含:整型常量MAX;
方法void win(),用于描述战斗者获胜后的行为;
方法int injure(int x),用于描述战斗者受伤后的行为。
(2)编写一个非抽象的战士类Warrior,实现接口Fightable。
该类中包含两个整型变量:经验值experience和血液值blood。
当战士获胜后经验值会增加,而受伤后血液值会减少x,
并且当战斗者的血液值低于MAX时会输出危险提示。
(3)编写战士类Warrior的子类BloodWarrior,
该类创建的战士在血液值低于MAX/2时才会输出危险提示。
(4)编写主类TestWarrior,对上述接口和类进行测试。

 * */

//胜利的话 :血液不变,经验+10
//受伤的话 :血液-10;
//如果血液低于30提示危险,等于就提示(死亡)K.0
//输入Pk回合数,输入PK结果,"y代表胜利,n代表受伤"
//拓展功能:当经验值满100时,等级+1,初始化血液100,经验值初始化为0

import java.util.Scanner;

public class Test_05 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		BloodWarrior s1 = new BloodWarrior();
		s1.blood = 100;//初始血液值
		System.out.print("请输入回合数:");
		int bout = sc.nextInt();
		
		System.out.println("请输入Pk结果 (y胜利/n受伤):");
		char PK = sc.next().charAt(0);

		s1.pk(PK, bout);
	}
}

	interface Fightable {
		int max = 30;// 危险值
		void win();// 用于描述战斗者获胜后的行为
		int injure(int x);// 用于描述战斗者受伤后的行为
	}

	class Warrinor implements Fightable {
		int blood;// 定义血液值
		int experience;// 定义经验值
		int grade;

		public void win() {
		};

		public int injure(int x) {
			return x;
		}
	}

	class BloodWarrior extends Warrinor {
		public void win() {
			experience += 10;
			System.out.println("血液值:" + blood + "/经验值:" + experience+"/等级:"+grade);
			if(experience == 100){
				grade += 1;
				experience=0;
				blood = 100 ;
				System.out.println("恭喜!等级提升!"+"等级:"+grade);
			}
		}

		public int injure(int x) {
			if (blood <= max) {
				System.out.println("*危险!血液值过低,请及时补血!");
			}// + "血液值:" + blood + "/经验值:" + experience+"/等级:"+grade
			blood -= x;
			System.out.println("受伤/血液值:" + "-" + x + "\t 剩余血液值:" + blood + "/经验值:" + experience+"/等级:"+grade);		
//			if(grade <= 0 && blood == 0){
				if (blood == 0) {
					System.out.println("K.O");// knock out
					System.exit(0);//想直接整个程序的结束用System.exit(0);
//				}
			}return blood;
		}

		public void pk(char PK, int bout) {
			for (int i = 1; i <= bout; i++) {			
				if (PK == 'y') {
					win();
				}
				if (PK == 'n') {
					injure(10);
				}	
			}
		}
	}


  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java程序设计》课程的库资料,由贺州学院整理,可供学生期末课程复习使用,也可以供相关任课教师出卷使用。 内容示例为: 40. __________包包含了Collection的接口的类的API。 答案:Java.util 41. Math.round(11.5)等于__________,Math.round(-11.5)等于__________。 答案:12; -11 [考点范围] 常用的系统类 42. ________对象可以使用read方法从标准的输入设备(通常键盘)读取数据;__________对象可以使用print方法向标准输出设备(屏幕)输出显示。 答案:System.in ;System.out [考点范围] JAVA输入输出系统 43. 框架(JFrame)和面板(JPanel)的默认布局管理器分别是______和_______。 答案:BorderLayout FlowLayout [考点范围] 图形用户界面 44. Swing的布局管理器主要包括_______。 答案:FlowLayout、BorderLayout、CardLayout、GridLayout、GridBogLayout、BoxLayout [考点范围] 图形用户界面 45. Java事件处理包括建立事件源、________和将事件源注册到监听器 。 答案:声明监听器 [考点范围] 图形用户界面 46. AWT的事件处理机制包括_______、事件和事件监听者。 答案:事件源 [考点范围] 图形用户界面 47. Swing的顶层容器有________、JApplet、JWwindow和JDialog。 答案:JFrame [考点范围] 图形用户界面 48. 线程的启动是通过调用其______________方法而实现的。 答案:start() [考点范围] 线程 49. Java虚拟机(JVM)中的线程调度器负责管理线程,调度器把线程的优先级分为10个级别,分别用Thread类中的类常量表示,每个Java线程的优先级都在常数________和_______之间,即Thread.MIN_PRIORIY和Thread.MAX_PRIORIY之间。 答案:1;10 [考点范围] 线程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值