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

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

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

1.运行样例

在这里插入图片描述

  • 强化规则

0~3不会失败
4-7失败不会掉等级 8-10失败掉一级 10→11失败掉7 11→12失败掉8 12以后失败炸

  • 强化几率(来自百度)

1-3 —— 1 3-4 ——0.95 4-5 ——0.9 5-6 —— 0.8 6-7 ——0.75 7-8 ——0.621 8-9 ——0.537 9-10 —— 0.414 10-11 ——0.339 11-12 ——0.207 12-13 ——0.28 13-14 —— 0.173 14-15 —— 0.136 15-16 —— 0.101

2.强化方法(实现强化)

    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;
    }
}
复制代码

猜你喜欢

转载自juejin.im/post/7034879655672807461