模拟地下城与勇士(DNF)的装备强化过程
刚刚开始学习java的小白一枚,给大家分享一下做的一个题目,希望大家能够指导一下我,让我进步更快!
**提示1:
- DNF装备强化在+1~+3 不会失败;
- +4~+7,失败后物品原有强化等级降低1级;
- +8~+10,失败后掉3级;
- 10上11或以上就爆了。
提示2: - DNF装备强化1~3级,成功率100%
- DNF装备强化3~4级,成功率95%
- DNF装备强化4~5级,成功率90%
- DNF装备强化5~6级,成功率80%
- DNF装备强化6~7级,成功率75%
- DNF装备强化7~8级,成功率62.1%
- DNF装备强化8~9级,成功率53.7%
- DNF装备强化9~10级,成功率41.4%
- DNF装备强化10~11级,成功率33.9%
- DNF装备强化11~12级,成功率28%
- DNF装备强化12~13级,成功率20.7%
- DNF装备强化13~14级,成功率17.3%
- DNF装备强化14~15级,成功率13.6%
- DNF装备强化15~16级,成功率10.1%
实现流程:
要求输入装备的原始等级,输入1执行强化,根据原始等级以及强化的成功率,显示装备的强化结果(用Math.random(),来随机一个数字,利用取值范围的区间来确定概率。)**
// 要求输入装备的原始等级,输入1执行强化,根据原始等级以及强化的成功率,显示装备的强化结果
public static void main(String[] args) {
//从控制台输入
Scanner sc = new Scanner(System.in);
System.out.println("请输入1执行强化");
//读取下一个整数
int n = sc.nextInt();
// 用number来记录强化的等级
int number = 0;
//写一个addNumber方法来实现装备的升级
number = addNumber(number);
//利用循环工具来实现,输入1之后可以继续强化
while (number != 0 ) {
//容错处理到了16级就不在执行此循环了
if (number == 16) {
break;
}
System.out.println("请输入1执行强化,按0结束强化");
n = sc.nextInt();
//判断用户输入的数字是几
if (n == 1) {
number = addnumber(number);
} else {
break;
}
}
// 判断装备是否爆掉,并给出不同的输出语句
if (number == 0) {
System.out.println("很遗憾,一天后可以继续,加油!");
} else {
System.out.println("恭喜您将装备强化到" + number + "级");
}
}
// 写一个方法来进行装备的强化
public static int addNumber(int number) {
//利用switch来实现装备的升级
switch (number) {
case 0:
case 1:
case 2:
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
case 3:
if ((Math.random() * 100) <= 95) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
number--;
System.out.println("强化失败,目前强化等级为" + number);
break;
case 4:
if ((Math.random() * 100) <= 90) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
number--;
System.out.println("强化失败,目前强化等级为" + number);
break;
case 5:
if ((Math.random() * 100) <= 80) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
number--;
System.out.println("强化失败,目前强化等级为" + number);
break;
case 6:
if ((Math.random() * 100) <= 75) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
number--;
System.out.println("强化失败,目前强化等级为" + number);
break;
case 7:
if ((Math.random() * 100) <= 62.1) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
number--;
System.out.println("强化失败,目前强化等级为" + number);
break;
case 8:
if ((Math.random() * 100) <= 53.7) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
number = number - 3;
System.out.println("强化失败,目前强化等级为" + number);
break;
case 9:
if ((Math.random() * 100) <= 41.4) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
number = number - 3;
System.out.println("强化失败,目前强化等级为" + number);
break;
case 10:
if ((Math.random() * 100) <= 33.9) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
System.out.println("强化失败,装备爆掉,强化等级重置为0,强化结束!");
number = 0;
break;
case 11:
if ((Math.random() * 100) <= 28) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
System.out.println("强化失败,装备爆掉,强化等级重置为0,强化结束!");
number = 0;
break;
case 12:
if ((Math.random() * 100) <= 20.7) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
System.out.println("强化失败,装备爆掉,强化等级重置为0,强化结束!");
number = 0;
break;
case 13:
if ((Math.random() * 100) <= 17.3) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
System.out.println("强化失败,装备爆掉,强化等级重置为0,强化结束!");
number = 0;
break;
case 14:
if ((Math.random() * 100) <= 13.6) {
number++;
System.out.println("强化成功,目前强化等级为" + number);
break;
}
System.out.println("强化失败,装备爆掉,强化等级重置为0,强化结束!");
number = 0;
break;
case 15:
if ((Math.random() * 100) <= 10.1) {
number++;
System.out.println("强化成功,目前强化等级为" + number + "已到达最高等级,强化结束");
break;
}
System.out.println("强化失败,装备爆掉,强化等级重置为0,强化结束!");
number = 0;
break;
}
//返回强化后的等级
return number;
}
}
刚刚开始学java,不知道还有没其它方法来实现这个功能。如果有,希望大佬能评论告诉我,感觉自己写的太繁琐了。由于知识水平有限,写的东西难免会有些错误,希望大家能帮我指正出来,谢谢大家了!!!