这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战
相信很多人都玩过腾讯的 DNF 游戏,有不少都是冲着大马猴玩的,这游戏最好玩的地方我感觉非强化锻造莫属,因为刺激啊,一念天堂,强化深似海。
DNF中强化装备能够为装备增加攻击力,从而增加角色的攻击力。强化的等级越高,增加的攻击越高,但强化装备有着一定的失败
无聊所以就随便写的代码,代码实现的也很简单没有考虑那么多,使用大量的 swtich...case... 实现。
只能通过代码来满足一下的强化欲望了。
1.运行样例
代码运行起来的样例基本就是图片上这样,强化成功会显示目前强化等级,强化失败则会有失败结果。
2.强化几率
从百度贴吧搞来的 DNF 装备的各个等级的强化成功率:
| 强化等级 | 强化成功几率 | 描述 |
|---|---|---|
| 1-3 | 100%=1 | |
| 3-4 | 95%=0.95 | 失败则降级 |
| 4-5 | 90%=0.9 | 失败则降级 |
| 5-6 | 80%=0.8 | 失败则降级 |
| 6-7 | 75%=0.75 | 失败则降级 |
| 7-8 | 62.1%=0.621 | 若失败则变回0 |
| 8-9 | 53.7%=0.537 | 若失败则变回0 |
| 9-10 | 41.4%=0.414 | 若失败则变回0 |
| 10-11 | 33.9%=0.339 | 失败则装备消失 |
| 12-13 | 28%=0.28 | 失败则装备消失 |
| 13-14 | 17.3%=0.173 | 失败则装备消失 |
| 14-15 | 13.6%=0.136 | 失败则装备消失 |
| 15-16 | 10.1%=0.101 | 失败则装备消失 |
2.强化方法(实现强化)
实现方法特别简单,就是通过 switch...case... 实现。至于每次强化的几率则是使用 Math.random() 生成的随机数来判断。
public static int qianghua(int lever) {
switch (lever) {
case 0:
case 1:
case 2:
lever++;
break;
case 3:
if (Math.random() <= 0.95) {
++lever;
}
break;
case 4:
if (Math.random() <= 0.90) {
++lever;
}
break;
case 5:
if (Math.random() <= 0.8) {
++lever;
}
break;
case 6:
if (Math.random() <= 0.75) {
++lever;
}
break;
case 7:
if (Math.random() <= 0.621) {
++lever;
}
break;
case 8:
if (Math.random() <= 0.537)
++lever;
else
--lever;
break;
case 9:
if (Math.random() <= 0.414)
++lever;
else
--lever;
break;
case 10:
if (Math.random() <= 0.339) {
++lever;
} else
lever -= 3;
break;
case 11:
if (Math.random() <= 0.28) {
++lever;
} else
lever -= 3;
break;
case 12:
if (Math.random() <= 0.207) {
++lever;
} else
lever = 0;
break;
case 13:
if (Math.random() <= 0.173) {
++lever;
} else lever = 0;
break;
case 14:
if (Math.random() <= 0.136) {
++lever;
} else lever = 0;
break;
case 15:
if (Math.random() <= 0.101) {
++lever;
} else lever = 0;
break;
}
return lever;
}
3.源码
import java.util.Scanner;
/*
地下城强化
*/
public class Test {
public static void main(String[] args) {
int lever;
boolean flag = false;
Scanner scan = new Scanner(System.in);
System.out.println("------------------------");
System.out.println("--------强------化-------");
System.out.println("------------------------");
while (true) {
System.out.println("武器自身强化等级:");
lever = scan.nextInt();
if (lever == 16) {
System.out.println("武器强化到顶" + "+16");
} else if (lever > 16 || lever < 0) {
System.out.println("输入不合法,请重新输入");
} else {
flag = true;
break;
}
}
if (flag) {
System.out.println("要强化武器吗?Y/N");
if ("Y".equals(scan.next())) {
while (flag) {
System.out.println("------开始强化------");
if(flag==false){
System.out.println("武器已破碎,请放入武器");
}
int n =lever;
lever = qianghua(lever);
if (lever == 0) {
flag = false;
System.out.println("强化失败,武器破碎");
} else if(n>=lever){
System.out.println("强化失败:+" + lever);
}else if(n<lever){
System.out.println("强化成功:+"+lever);
}
if(flag){
System.out.println("要继续强化吗?y/n");
if ("n".equals(scan.next())){
System.out.println("退出强化");
break;
}
}else {
System.out.println("武器已破碎");
break;
}
}
}
}
}
public static int qianghua(int lever) {
switch (lever) {
case 0:
case 1:
case 2:
lever++;
break;
case 3:
if (Math.random() <= 0.95) {
++lever;
}
break;
case 4:
if (Math.random() <= 0.90) {
++lever;
}
break;
case 5:
if (Math.random() <= 0.8) {
++lever;
}
break;
case 6:
if (Math.random() <= 0.75) {
++lever;
}
break;
case 7:
if (Math.random() <= 0.621) {
++lever;
}
break;
case 8:
if (Math.random() <= 0.537)
++lever;
else
--lever;
break;
case 9:
if (Math.random() <= 0.414)
++lever;
else
--lever;
break;
case 10:
if (Math.random() <= 0.339) {
++lever;
} else
lever -= 3;
break;
case 11:
if (Math.random() <= 0.28) {
++lever;
} else
lever -= 3;
break;
case 12:
if (Math.random() <= 0.207) {
++lever;
} else
lever = 0;
break;
case 13:
if (Math.random() <= 0.173) {
++lever;
} else lever = 0;
break;
case 14:
if (Math.random() <= 0.136) {
++lever;
} else lever = 0;
break;
case 15:
if (Math.random() <= 0.101) {
++lever;
} else lever = 0;
break;
}
return lever;
}
}
千万不要碰强化,希望大家强化不会失败,打造自己的 DNF 豪华装备。