1 package test_5_3; 2 3 import java.util.Scanner; 4 5 public class Hero { 6 7 public String name; 8 public int hp; 9 public int lv; 10 11 /** 12 * (1)定义一个游戏中Hero 英雄的类,在该类中定义英雄的名字,生命值和等级3 个属性 13 * 定义一个构造函数完成对生命值和等级的初始化 14 * 分别赋初值为100,1。同时实现名字的输入和英雄信息的输出。 15 */ 16 17 public Hero() { 18 19 inputName(); 20 this.hp = 100; 21 this.lv = 1; 22 23 showStatus(); 24 25 } 26 27 private void inputName() { 28 29 Scanner sc = new Scanner(System.in); 30 System.out.println("请输入名字:"); 31 this.name = sc.nextLine(); 32 } 33 34 private void showStatus() { 35 36 System.out.println("名字:" + this.name + "\n生命值:" + this.hp + "\n等级:" + this.lv); 37 } 38 39 /** 40 * (2)在上一题的基础上,为英雄再定义拥有一个带参数的构造方法,传入一个英雄类型的值, 41 * 如果为1,则为普通英雄,生命值为100,如果该值为2,则为高级英雄,生命值初始化为200。 42 */ 43 44 public Hero(int tpye) { 45 46 inputName(); 47 if (tpye == 1) { 48 this.hp = 100; 49 } else if (tpye == 2){ 50 this.hp = 200; 51 } 52 this.lv = 1; 53 54 showStatus(); 55 } 56 57 /** 58 * (3)在上两英雄类型的基础上,为英雄添加一个基本战斗的方法, 59 * 该方法拥有一个英雄类型的参数, 当传入另一个英雄时,能降低对方100 点血。 60 * 再增加一个绝招的重载方法,加入一个战斗类型参数,通过输入不同绝招参数,降低对方不同的血量。 61 */ 62 63 public void battle(Hero hero) { 64 65 this.hp -= 100; 66 System.out.println("受到攻击,损失100生命值"); 67 showStatus(); 68 69 } 70 71 public void battle(Hero hero, int attack) { 72 73 if (attack == 1) { 74 this.hp -= 1; 75 System.out.println("被摸了一下,损失1生命值"); 76 } else if (attack == 2){ 77 this.hp -= 20; 78 System.out.println("被砍了一刀,损失20生命值"); 79 } else { 80 this.hp -= 50; 81 System.out.println("被要了命,损失50生命值"); 82 } 83 84 showStatus(); 85 86 } 87 88 }
1 package test_5_3; 2 3 public class Test { 4 5 public static void main(String[] args) { 6 7 Hero h1 = new Hero(); 8 9 System.out.println("-----"); 10 11 Hero h2 = new Hero(2); 12 13 System.out.println("-----"); 14 15 h2.battle(h1); 16 17 System.out.println("-----"); 18 19 h2.battle(h1, 1); 20 21 System.out.println("-----"); 22 23 h2.battle(h1, 2); 24 25 System.out.println("-----"); 26 27 h2.battle(h1, 3); 28 29 } 30 31 }
结果如下:
请输入名字:
joker
名字:joker
生命值:100
等级:1
-----
请输入名字:
mona
名字:mona
生命值:200
等级:1
-----
受到攻击,损失100生命值
名字:mona
生命值:100
等级:1
-----
被摸了一下,损失1生命值
名字:mona
生命值:99
等级:1
-----
被砍了一刀,损失20生命值
名字:mona
生命值:79
等级:1
-----
被要了命,损失50生命值
名字:mona
生命值:29
等级:1