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

别说谁变了你拦得住时间么 提交于 2020-11-02 13:05:23

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


强化未成功惩罚机制

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类

代码如下:

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基础的简单运用,随着学习的加深,我将为大家带来更多内容。

我们下期再见。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!