[20-04-30][Self-test 26]Java Hero

 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

猜你喜欢

转载自www.cnblogs.com/mirai3usi9/p/12811679.html