Java实现——地下城与勇士DNF武器强化(+0——+16)

1,146 阅读2分钟

这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战

相信很多人都玩过腾讯的 DNF 游戏,有不少都是冲着大马猴玩的,这游戏最好玩的地方我感觉非强化锻造莫属,因为刺激啊,一念天堂,强化深似海。

DNF中强化装备能够为装备增加攻击力,从而增加角色的攻击力。强化的等级越高,增加的攻击越高,但强化装备有着一定的失败

无聊所以就随便写的代码,代码实现的也很简单没有考虑那么多,使用大量的 swtich...case... 实现。

只能通过代码来满足一下的强化欲望了。

1.运行样例

代码运行起来的样例基本就是图片上这样,强化成功会显示目前强化等级,强化失败则会有失败结果。

在这里插入图片描述

2.强化几率

从百度贴吧搞来的 DNF 装备的各个等级的强化成功率:

强化等级强化成功几率描述
1-3100%=1
3-495%=0.95失败则降级
4-590%=0.9失败则降级
5-680%=0.8失败则降级
6-775%=0.75失败则降级
7-862.1%=0.621若失败则变回0
8-953.7%=0.537若失败则变回0
9-1041.4%=0.414若失败则变回0
10-1133.9%=0.339失败则装备消失
12-1328%=0.28失败则装备消失
13-1417.3%=0.173失败则装备消失
14-1513.6%=0.136失败则装备消失
15-1610.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 豪华装备。