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

大家好,我是kai_Childe,作为一名java刚入门的小白,本期就以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%


一、最终效果预览

在这里插入图片描述

二、实现步骤

1.创建Level类

代码如下:

1public class Level { 2 3 4 /** 5 * 定義一個私有屬性:等級(level),用來存放用戶要強化裝備的初始等級。 6 */ 7 private static int level ; 8 9 /** 10 * 該方法用於返回level. 11 * @return 返回level 12 */ 13 public int getLevel() { 14 15 16 return level; 17 } 18 19 /** 20 * 該方法用於給私有屬性level傳值。 21 * 22 * @param level 23 */ 24 public void setLevel(int level) { 25 26 27 this.level = level; 28 } 29}

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

2.创建ChengGonLv类

代码如下:

1public class ChengGonLv { 2 3 4 /** 5 * 定義一個int型數據,用來存儲存儲生成的隨機數。 6 */ 7 private static int cgl; 8 9 /** 10 * 該方法用於給私有屬性cgl傳值。 11 * 12 * @param cgl 13 */ 14 public void setCgl(int cgl) { 15 16 17 this.cgl = cgl; 18 } 19 20 /** 21 * 22 * @return 返回cgl 23 */ 24 public int getCgl() { 25 26 27 return cgl; 28 } 29 30 /** 31 * 該方法用於產生一個0-10000的隨機數 32 */ 33 public void suiJiShu() { 34 35 36 setCgl((int) (Math.random() * 100001)); 37 } 38}

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

3.创建QiangHua类

代码如下:

1public class QiangHua { 2 3 4 5 /** 6 * 創建Level對象 7 */ 8 Level level = new Level(); 9 10 /** 11 * 定義一個int型變量dengJi用於接收裝備初始等級。 12 */ 13 int dengJi = level.getLevel(); 14 15 /** 16 * 創建ChengGonLv對象 17 */ 18 ChengGonLv cg = new ChengGonLv(); 19 20 /** 21 * 該方法用於強化裝備 22 * 23 * @return 返回強化後的裝備等級 24 */ 25 public int qiangHua() { 26 27 28 switch (dengJi) { 29 30 31 case 0: 32 case 1: 33 case 2: 34 dengJi++; 35 break; 36 case 3: 37 if (cg.getCgl() > 95000) { 38 39 40 dengJi--; 41 } else { 42 43 44 dengJi++; 45 } 46 break; 47 case 4: 48 if (cg.getCgl() > 90000) { 49 50 51 dengJi--; 52 } else { 53 54 55 dengJi++; 56 } 57 break; 58 case 5: 59 if (cg.getCgl() > 80000) { 60 61 62 dengJi--; 63 } else { 64 65 66 dengJi++; 67 } 68 break; 69 case 6: 70 if (cg.getCgl() > 75000) { 71 72 73 dengJi--; 74 } else { 75 76 77 dengJi++; 78 } 79 break; 80 case 7: 81 if (cg.getCgl() > 62100) { 82 83 84 dengJi -= 3; 85 } else { 86 87 88 dengJi++; 89 } 90 break; 91 case 8: 92 if (cg.getCgl() > 53700) { 93 94 95 dengJi -= 3; 96 } else { 97 98 99 dengJi++; 100 } 101 break; 102 case 9: 103 if (cg.getCgl() > 41400) { 104 105 106 dengJi -= 3; 107 } else { 108 109 110 dengJi++; 111 } 112 break; 113 case 10: 114 if (cg.getCgl() > 33900) { 115 116 117 dengJi = -1; 118 } else { 119 120 121 dengJi++; 122 } 123 break; 124 case 11: 125 if (cg.getCgl() > 28000) { 126 127 128 dengJi = -1; 129 } else { 130 131 132 dengJi++; 133 } 134 break; 135 case 12: 136 if (cg.getCgl() > 20700) { 137 138 139 dengJi = -1; 140 } else { 141 142 143 dengJi++; 144 } 145 break; 146 case 13: 147 if (cg.getCgl() > 17300) { 148 149 150 dengJi = -1; 151 } else { 152 153 154 dengJi++; 155 } 156 break; 157 case 14: 158 if (cg.getCgl() > 13600) { 159 160 161 dengJi = -1; 162 } else { 163 164 165 dengJi++; 166 } 167 break; 168 case 15: 169 if (cg.getCgl() > 10100) { 170 171 172 dengJi = -1; 173 } else { 174 175 176 dengJi++; 177 } 178 break; 179 default: 180 dengJi = 16; 181 break; 182 } 183 return dengJi; 184 } 185}

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

4.编写测试类

1import java.util.Scanner; 2 3/** 4 * 5 * @author kaishao 6 * 7 */ 8public class DNFZhuangBeiQiangHua { 9 10 11 12 public static void main(String[] args) { 13 14 15 // 實例化一個Scanner類對象,用來從鍵盤輸入數據。 16 Scanner sc = new Scanner(System.in); 17 // 實例化一個Level類對象 18 Level level = new Level(); 19 System.out.println("=======請輸入裝備的原始等級======="); 20 System.out.print("\t\t"); 21 // 接收用戶輸入的初始等級,傳入Level類中儲存。 22 level.setLevel(sc.nextInt()); 23 System.out.println(); 24 // 實例化一個QiangHua類對象 25 QiangHua qiangHua = new QiangHua(); 26 // 實例化一個ChengGonLv類對象 27 ChengGonLv chengGonLv = new ChengGonLv(); 28 while (true) { 29 30 31 // 生成裝備強化概率 32 chengGonLv.suiJiShu(); 33 // 將接收到的裝備強化後的等級賦值給a 34 int a = qiangHua.qiangHua(); 35 // -1代表 裝備從等級10上強化到11或以上時失敗銷毀。 36 if (a == -1) { 37 38 39 System.out.println("===============抱歉!================"); 40 System.out.println("======等級" + level.getLevel() + "強化到等級" + (level.getLevel() + 1) + "失敗======="); 41 System.out.println("============裝備已銷毀============="); 42 break; 43 // 16代表裝備的最高等級,已無法繼續強化 44 } else if (a == 16) { 45 46 47 if (level.getLevel() >= 16) { 48 49 50 System.out.println("==您的裝備已達到滿級16,無法繼續強化=="); 51 } else { 52 53 54 System.out.println("===============恭喜!================"); 55 System.out.println("=======您的裝備已強化到滿級======="); 56 } 57 break; 58 } else { 59 60 61 if (a > level.getLevel()) { 62 63 64 System.out.println("===============恭喜!================"); 65 System.out.println("=======裝備強化成功,當前等級======="); 66 System.out.println("\t\t" + a + "\n"); 67 } else { 68 69 70 System.out.println("===============抱歉!================"); 71 System.out.println("=======裝備強化失敗,當前等級======="); 72 System.out.println("\t\t" + a + "\n"); 73 } 74 System.out.println("============是否繼續強化==========="); 75 System.out.println("==========是請輸入1,否請輸入2========="); 76 System.out.print("\t\t"); 77 int b = sc.nextInt(); 78 System.out.println(); 79 if (b == 1) { 80 81 82 level.setLevel(a); 83 } else if (b == 2) { 84 85 86 break; 87 } 88 } 89 } 90 } 91}

5.测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

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

我们下期再见。

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java日期时间API系列31

  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前

深度学习技术开发与应用

关键点1.强化学习的发展历程2.马尔可夫决策过程3.动态规划4.无模型预测学习5.无模型控制学习6.价值函数逼近7.策略梯度方法8.深度强化学习DQN算法系列9.深度策略梯度DDPG,PPO等第一天9:0012:0014:0017:00一、强化学习概述1.强化学习介绍2.强化学习与其它机器学习的不同3.强化学习发展历史4.强化学习典