标题模拟的要求
做一个DNF装备强化的简单项目,强化装备的成功率会随着装备等级的增加而降低。
- 提示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执行强化,根据原始等级以及强化的成功率,显示装备的强化结果
代码程序:
//在工程里创建一个包(package)
package com.softeem.lesson04.example;
//引用“Scanner”来使用户能够通过键盘自行输入数据
import java.util.Scanner;
//创建类(class)
public class Work {
//主函数(main)
public static void main(String[] args) {
//Scanner输入
Scanner sc = new Scanner(System.in);
//打印出"装备当前等级:"
System.out.println("装备当前等级:");
//定义一个用户可以通过键盘输入的数据类型
int i = sc.nextInt();
//通过switch语句来实现功能
// i 表示用户输入的等级
switch(i) {
//利用穿透性,i=1,2时都实现“i+=1”
case 1:
case 2:
i += 1;
break;
case 3:
//设置一个随机数(0 - 1)
//因为是小数,设置为double类型
double d1 = Math.random();
//利用if—else语句实现概率的功能
//如果随机数小于等于0.95,等级加1
if(d1 <= 0.95) {
i += 1;
}else {
//不在这个范围内的话,等级减1
i -= 1;
}
break;
case 4:
double d2 = Math.random();
//如果随机数小于等于0.9,等级加1,否则减1
if(d2 <= 0.9) {
i += 1;
}else {
i -= 1;
}
break;
case 5:
double d3 = Math.random();
//如果随机数小于等于0.80,等级加1,否则减1
if(d3 <= 0.80) {
i += 1;
}else {
i -= 1;
}
break;
case 6:
double d4 = Math.random();
//如果随机数小于等于0.75,等级加1,否则减1
if(d4 <= 0.75) {
i += 1;
}else {
i -= 1;
}
break;
case 7:
double d5 = Math.random();
//如果随机数小于等于0.621,等级加1,否则减1
if(d5 <= 0.621) {
i += 1;
}else {
i -= 3;
}
break;
case 8:
double d6 = Math.random();
//如果随机数小于等于0.537,等级加1,否则减3
if(d6 <= 0.537) {
i += 1;
}else {
i -= 3;
}
break;
case 9:
double d7 = Math.random();
//如果随机数小于等于0.414,等级加1,否则减3
if(d7 <= 0.414) {
i += 1;
}else {
i -= 3;
}
break;
case 10:
double d8 = Math.random();
//如果随机数小于等于0.339,等级加1,否则清零
if(d8 <= 0.339) {
i += 1;
}else {
i = 0;
System.out.println("真可惜,装备爆了");
}
break;
case 11:
double d9 = Math.random();
//如果随机数小于等于0.28,等级加1,否则清零
if(d9 <= 0.28) {
i += 1;
}else {
i = 0;
System.out.println("真可惜,装备爆了");
}
break;
case 12:
double d10 = Math.random();
//如果随机数小于等于0.207,等级加1,否则清零
if(d10 <= 0.207) {
i += 1;
}else {
i = 0;
System.out.println("真可惜,装备爆了");
}
break;
case 13:
double d11 = Math.random();
//如果随机数小于等于0.173,等级加1,否则清零
if(d11 <= 0.173) {
i += 1;
}else {
i = 0;
System.out.println("真可惜,装备爆了");
}
break;
case 14:
double d12 = Math.random();
//如果随机数小于等于0.136,等级加1,否则清零
if(d12 <= 0.136) {
i += 1;
}else {
i = 0;
System.out.println("真可惜,装备爆了");
}
break;
case 15:
double d13 = Math.random();
//如果随机数小于等于0.101,等级加1,否则清零
if(d13 <= 0.101) {
i += 1;
}else {
i = 0;
System.out.println("真可惜,装备爆了");
}
break;
case 16:
//如果输入等级为16,等级不变,输出提示“已强化至顶级”
System.out.println("已强化至顶级");
}
System.out.println("武器强化结果:"+ i);
}
}
**
结果展示
输入等级为4时,如果随机数大小在范围内,即升级成功,等级加1,显示结果为5
**
输入等级为6时,如果随机数大小不在范围内,即升级失败,等级减1,显示结果为5
输入等级为8时,如果随机数大小不在范围内,即升级失败,等级减3,显示结果为5
输入等级为10时,如果随机数大小不在范围内,即升级失败,等级清零,显示结果为5
输入等级为16时,无法继续强化装备,等级不变,显示结果为16
nter)
**
总结
**为了实现该想法需求的功能,我们主要通过:
Scanner: 实现键盘输入数据的功能;
switch语句: 判定输入数据,在1 至 16 的范围内,根据输入数据的不同得到不同的升级概率
if-else:通过随机数与设置具体值的比较,得到相应的升级概率。
Math.random: 随机数(double 类型),大小在0到1之间波动,通过它来实现概率的变化。
虽然题目要求比较简单,我们用来实现功能用到的语句较少,实现的功能比较单一。与现实生活中的游戏设计中相比较为简单,考虑的因素较少。但是总体上还是完整实现了题目要求的功能。