题目
“不死鸟之眼”是某游戏的一件游戏道具
设计程序,提示用户输入最大生命值, 当前血量, 每5秒回复生命值
程序输出购买该道具后的生命回复效果。
(以每5秒为时间单位显示回复效果)
装备效果:
+1200最大生命值
+100每五秒回血
每损失10%生命值,受到的治疗效果额外增加6%
样例输入:
最大生命值: 8800
当前血量: 5000
每5秒回复: 100
样例输出:
5260 (+260)
5520 (+260)
5780 (+260)
6040 (+260)
6288 (+248)
……
代码
import java.util.Scanner;
public class Homework0604 {
public static void main(String[] args) {
print();
System.out.println("********************样例************************");
int[] player0 = {8800, 5000, 100};
method(player0);
System.out.println("\n************************************************\n");
int[] player = player();
method(player);
}
private static void method(int[] player) {
int maxBlood = player[0];
int nowBlood = player[1];
int reply = player[2];
int equipmentBlood = 1200;
int equipmentReply = 100;
int sumBlood = maxBlood + equipmentBlood;
double extraReply = 0;
int add = 0;
System.out.println("总血量 = " + sumBlood + "\n");
while (nowBlood < sumBlood){
extraReply = (sumBlood - nowBlood) / (int)(sumBlood * 0.1) * 0.06;
System.out.println("当前血量 = " + nowBlood + ", 需恢复 = " + (sumBlood - nowBlood) + ", 额外回复速率 = " + extraReply);
add = (int)(( equipmentReply + reply ) * ( 1 + extraReply)) ;
nowBlood += add ;
if(nowBlood > sumBlood){
add = sumBlood - (nowBlood - add);
nowBlood = sumBlood;
System.out.println( "当前生命值: " + nowBlood + " ( +" + add + " )");
return;
}
System.out.println( "当前生命值: " + nowBlood + " ( +" + add + " )\n");
}
}
private static int[] player() {
Scanner sc = new Scanner(System.in);
System.out.print("请输入最大生命值:");
int maxBlood = sc.nextInt();
System.out.print("请输入当前血量:");
int nowBlood = sc.nextInt();
System.out.print("请输入每5秒回复生命值:");
int reply = sc.nextInt();
int[] player = {maxBlood, nowBlood, reply};
return player;
}
private static void print() {
System.out.println("\n********************************************************************************************\n");
System.out.println("设计程序,提示用户输入最大生命值, 当前血量, 每5秒回复生命值, 程序输出购买该道具后的生命回复效果。");
System.out.println("(以每5秒为时间单位显示回复效果)");
System.out.println("装备效果: ");
System.out.println("\t+1200最大生命值");
System.out.println("\t+100每五秒回血");
System.out.println("\n********************************************************************************************\n");
}
}
运行结果
********************************************************************************************
设计程序,提示用户输入最大生命值, 当前血量, 每5秒回复生命值, 程序输出购买该道具后的生命回复效果。
(以每5秒为时间单位显示回复效果)
装备效果:
+1200最大生命值
+100每五秒回血
********************************************************************************************
********************样例************************
总血量 = 10000
当前血量 = 5000, 需恢复 = 5000, 额外回复速率 = 0.3
当前生命值: 5260 ( +260 )
当前血量 = 5260, 需恢复 = 4740, 额外回复速率 = 0.24
当前生命值: 5508 ( +248 )
当前血量 = 5508, 需恢复 = 4492, 额外回复速率 = 0.24
当前生命值: 5756 ( +248 )
当前血量 = 5756, 需恢复 = 4244, 额外回复速率 = 0.24
当前生命值: 6004 ( +248 )
当前血量 = 6004, 需恢复 = 3996, 额外回复速率 = 0.18
当前生命值: 6240 ( +236 )
当前血量 = 6240, 需恢复 = 3760, 额外回复速率 = 0.18
当前生命值: 6476 ( +236 )
当前血量 = 6476, 需恢复 = 3524, 额外回复速率 = 0.18
当前生命值: 6712 ( +236 )
当前血量 = 6712, 需恢复 = 3288, 额外回复速率 = 0.18
当前生命值: 6948 ( +236 )
当前血量 = 6948, 需恢复 = 3052, 额外回复速率 = 0.18
当前生命值: 7184 ( +236 )
当前血量 = 7184, 需恢复 = 2816, 额外回复速率 = 0.12
当前生命值: 7408 ( +224 )
当前血量 = 7408, 需恢复 = 2592, 额外回复速率 = 0.12
当前生命值: 7632 ( +224 )
当前血量 = 7632, 需恢复 = 2368, 额外回复速率 = 0.12
当前生命值: 7856 ( +224 )
当前血量 = 7856, 需恢复 = 2144, 额外回复速率 = 0.12
当前生命值: 8080 ( +224 )
当前血量 = 8080, 需恢复 = 1920, 额外回复速率 = 0.06
当前生命值: 8292 ( +212 )
当前血量 = 8292, 需恢复 = 1708, 额外回复速率 = 0.06
当前生命值: 8504 ( +212 )
当前血量 = 8504, 需恢复 = 1496, 额外回复速率 = 0.06
当前生命值: 8716 ( +212 )
当前血量 = 8716, 需恢复 = 1284, 额外回复速率 = 0.06
当前生命值: 8928 ( +212 )
当前血量 = 8928, 需恢复 = 1072, 额外回复速率 = 0.06
当前生命值: 9140 ( +212 )
当前血量 = 9140, 需恢复 = 860, 额外回复速率 = 0.0
当前生命值: 9340 ( +200 )
当前血量 = 9340, 需恢复 = 660, 额外回复速率 = 0.0
当前生命值: 9540 ( +200 )
当前血量 = 9540, 需恢复 = 460, 额外回复速率 = 0.0
当前生命值: 9740 ( +200 )
当前血量 = 9740, 需恢复 = 260, 额外回复速率 = 0.0
当前生命值: 9940 ( +200 )
当前血量 = 9940, 需恢复 = 60, 额外回复速率 = 0.0
当前生命值: 10000 ( +60 )
************************************************
请输入最大生命值: