Java基础实现模拟地下城与勇士(DNF)的装备强化过程

Wesley13
• 阅读 712

大家好,我是kai_Childe,作为一名java刚入门的小白,本期就以java基础来模拟地下城与勇士(DNF)的装备强化过程,并以此来记录我的学习过程。
Java基础实现模拟地下城与勇士(DNF)的装备强化过程

文章目录

  • 强化未成功惩罚机制
  • 各等级强化成功概率
  • 一、最终效果预览
  • 二、实现步骤
    • 1.创建Level类
    • 2.创建ChengGonLv类
    • 3.创建QiangHua类
    • 4.编写测试类
    • 5.测试
  • 总结

强化未成功惩罚机制

DNF装备强化在+1~+3 不会失败;
+4~+7,失败后物品原有强化等级降低1级;
+8~+10,失败后掉3级;
10上11或以上就爆了。

各等级强化成功概率

等级

成功率

1~3

100%

3~4

95%

4~5

90%

5~6

80%

6~7

75%

7~8

62.1%

8~9

53.7%

9~10

41.4%

10~11

33.9%

11~12

28%

12~13

20.7%

13~14

17.3%

14~15

13.6%

15~16

10.1%


一、最终效果预览

Java基础实现模拟地下城与勇士(DNF)的装备强化过程

二、实现步骤

1.创建Level类

代码如下:

public class Level {
   
     
    /**
     * 定義一個私有屬性:等級(level),用來存放用戶要強化裝備的初始等級。
     */
    private static int level ;
    
    /**
     * 該方法用於返回level.
     * @return 返回level
     */
    public int getLevel() {
   
     
        return level;
    }
    
    /**
     * 該方法用於給私有屬性level傳值。
     * 
     * @param level
     */
    public void setLevel(int level) {
   
     
        this.level = level;
    }
}

該類用於存取用戶輸入的初始裝備等級。

2.创建ChengGonLv类

代码如下:

public class ChengGonLv {
   
     
    /**
     * 定義一個int型數據,用來存儲存儲生成的隨機數。
     */
    private static int cgl;

    /**
     * 該方法用於給私有屬性cgl傳值。
     * 
     * @param cgl
     */
    public void setCgl(int cgl) {
   
     
        this.cgl = cgl;
    }

    /**
     * 
     * @return 返回cgl
     */
    public int getCgl() {
   
     
        return cgl;
    }

    /**
     * 該方法用於產生一個0-10000的隨機數
     */
    public void suiJiShu() {
   
     
        setCgl((int) (Math.random() * 100001));
    }
}

該類用於動態產生一個0~100000的隨機數,並對其進行存取操作。後面裝備強化的成功率便是根據此處生成的隨機數判斷。

3.创建QiangHua类

代码如下:

public class QiangHua {
   
     

    /**
     * 創建Level對象
     */
    Level level = new Level();

    /**
     * 定義一個int型變量dengJi用於接收裝備初始等級。
     */
    int dengJi = level.getLevel();

    /**
     * 創建ChengGonLv對象
     */
    ChengGonLv cg = new ChengGonLv();

    /**
     * 該方法用於強化裝備
     * 
     * @return 返回強化後的裝備等級
     */
    public int qiangHua() {
   
     
        switch (dengJi) {
   
     
        case 0:
        case 1:
        case 2:
            dengJi++;
            break;
        case 3:
            if (cg.getCgl() > 95000) {
   
     
                dengJi--;
            } else {
   
     
                dengJi++;
            }
            break;
        case 4:
            if (cg.getCgl() > 90000) {
   
     
                dengJi--;
            } else {
   
     
                dengJi++;
            }
            break;
        case 5:
            if (cg.getCgl() > 80000) {
   
     
                dengJi--;
            } else {
   
     
                dengJi++;
            }
            break;
        case 6:
            if (cg.getCgl() > 75000) {
   
     
                dengJi--;
            } else {
   
     
                dengJi++;
            }
            break;
        case 7:
            if (cg.getCgl() > 62100) {
   
     
                dengJi -= 3;
            } else {
   
     
                dengJi++;
            }
            break;
        case 8:
            if (cg.getCgl() > 53700) {
   
     
                dengJi -= 3;
            } else {
   
     
                dengJi++;
            }
            break;
        case 9:
            if (cg.getCgl() > 41400) {
   
     
                dengJi -= 3;
            } else {
   
     
                dengJi++;
            }
            break;
        case 10:
            if (cg.getCgl() > 33900) {
   
     
                dengJi = -1;
            } else {
   
     
                dengJi++;
            }
            break;
        case 11:
            if (cg.getCgl() > 28000) {
   
     
                dengJi = -1;
            } else {
   
     
                dengJi++;
            }
            break;
        case 12:
            if (cg.getCgl() > 20700) {
   
     
                dengJi = -1;
            } else {
   
     
                dengJi++;
            }
            break;
        case 13:
            if (cg.getCgl() > 17300) {
   
     
                dengJi = -1;
            } else {
   
     
                dengJi++;
            }
            break;
        case 14:
            if (cg.getCgl() > 13600) {
   
     
                dengJi = -1;
            } else {
   
     
                dengJi++;
            }
            break;
        case 15:
            if (cg.getCgl() > 10100) {
   
     
                dengJi = -1;
            } else {
   
     
                dengJi++;
            }
            break;
        default:
            dengJi = 16;
            break;
        }
        return dengJi;
    }
}

該類接收接收來自Level类和ChengGonLv類存儲的裝備初始等級和隨機數,通過switch語句對裝備進行強化,並返回強化後的等級。

4.编写测试类

import java.util.Scanner;

/**
 * 
 * @author kaishao
 *
 */
public class DNFZhuangBeiQiangHua {
   
     

    public static void main(String[] args) {
   
     
        // 實例化一個Scanner類對象,用來從鍵盤輸入數據。
        Scanner sc = new Scanner(System.in);
        // 實例化一個Level類對象
        Level level = new Level();
        System.out.println("=======請輸入裝備的原始等級=======");
        System.out.print("\t\t");
        // 接收用戶輸入的初始等級,傳入Level類中儲存。
        level.setLevel(sc.nextInt());
        System.out.println();
        // 實例化一個QiangHua類對象
        QiangHua qiangHua = new QiangHua();
        // 實例化一個ChengGonLv類對象
        ChengGonLv chengGonLv = new ChengGonLv();
        while (true) {
   
     
            // 生成裝備強化概率
            chengGonLv.suiJiShu();
            // 將接收到的裝備強化後的等級賦值給a
            int a = qiangHua.qiangHua();
            // -1代表 裝備從等級10上強化到11或以上時失敗銷毀。
            if (a == -1) {
   
     
                System.out.println("===============抱歉!================");
                System.out.println("======等級" + level.getLevel() + "強化到等級" + (level.getLevel() + 1) + "失敗=======");
                System.out.println("============裝備已銷毀=============");
                break;
                // 16代表裝備的最高等級,已無法繼續強化
            } else if (a == 16) {
   
     
                if (level.getLevel() >= 16) {
   
     
                    System.out.println("==您的裝備已達到滿級16,無法繼續強化==");
                } else {
   
     
                    System.out.println("===============恭喜!================");
                    System.out.println("=======您的裝備已強化到滿級=======");
                }
                break;
            } else {
   
     
                if (a > level.getLevel()) {
   
     
                    System.out.println("===============恭喜!================");
                    System.out.println("=======裝備強化成功,當前等級=======");
                    System.out.println("\t\t" + a + "\n");
                } else {
   
     
                    System.out.println("===============抱歉!================");
                    System.out.println("=======裝備強化失敗,當前等級=======");
                    System.out.println("\t\t" + a + "\n");
                }
                System.out.println("============是否繼續強化===========");
                System.out.println("==========是請輸入1,否請輸入2=========");
                System.out.print("\t\t");
                int b = sc.nextInt();
                System.out.println();
                if (b == 1) {
   
     
                    level.setLevel(a);
                } else if (b == 2) {
   
     
                    break;
                }
            }
        }
    }
}

5.测试

Java基础实现模拟地下城与勇士(DNF)的装备强化过程
Java基础实现模拟地下城与勇士(DNF)的装备强化过程
Java基础实现模拟地下城与勇士(DNF)的装备强化过程


总结

以上就是今天要讲的内容,本文仅仅是对java基础的简单运用,随着学习的加深,我将为大家带来更多内容。

我们下期再见。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
深度学习技术开发与应用
关键点1.强化学习的发展历程2.马尔可夫决策过程3.动态规划4.无模型预测学习5.无模型控制学习6.价值函数逼近7.策略梯度方法8.深度强化学习DQN算法系列9.深度策略梯度DDPG,PPO等第一天9:0012:0014:0017:00一、强化学习概述1.强化学习介绍2.强化学习与其它机器学习的不同3.强化学习发展历史4.强化学习典
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这