模擬地下城與勇士(DNF)的裝備強化實現過程

發表於2020-11-01

模擬地下城與勇士(DNF)的裝備強化實現過程:

題目:

  • DNF裝備強化在+1~+3 不會失敗;
  • +4~+7,失敗後物品原有強化等級降低1級;
  • +8~+10,失敗後掉3級;
  • 10上11或以上就爆了。

提示2:

  • DNF裝備強化1~3級,成功率100%
  • DNF裝備強化3~4級,成功率95%
  • DNF裝備強化4~5級,成功率90%
  • DNF裝備強化5~6級,成功率80%
  • DNF裝備強化6~7級,成功率75%
  • DNF裝備強化7~8級,成功率62.1%
  • DNF裝備強化8~9級,成功率53.7%
  • DNF裝備強化9~10級,成功率41.4%
  • DNF裝備強化10~11級,成功率33.9%
  • DNF裝備強化11~12級,成功率28%
  • DNF裝備強化12~13級,成功率20.7%
  • DNF裝備強化13~14級,成功率17.3%
  • DNF裝備強化14~15級,成功率13.6%
  • DNF裝備強化15~16級,成功率10.1%
    要求://方法執行後輸出強化結果:
    //nowLevel表示當前裝備等級
    //targetLevel表示目標等級
    //1.恭喜你強化成功,當前等級:targetLevel
    //2.強化失敗,當前等級:nowLevel-1
    //3.強化失敗,當前等級:nowLevel-3
    //4.很遺憾,強化失敗,裝備損壞

實現思路:
定義一個初始裝備等級nowLevel和目標裝備等級targetLevel,建立一個grade方法,迴圈使用if else 語句來進行判斷,假如裝備等級為3級,定義一個隨機數,用if判斷隨機數生成的數字,例如90%的概率就是隨機生成的數大於10這樣去判斷,所以裝備等級升級或者降級的概率都用次方法來判斷即可,然後再判斷升級的if判斷語句里加入判斷裝備的等級是否與目標等級一致,如果一致的話直接return掉這個方法退出迴圈,輸出語句,寫完每一級的實現程式碼,再加上一個死迴圈即可實現模擬DNF裝備強化的過程。

package com.softeem.lesson02;

import java.util.Scanner;

public class Dnf {

	public void grade(int nowLevel, int targetLevel) {
		
		for (int k = 1;; k++) {
			if (nowLevel == 1) {
				nowLevel += 1;
				System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);

				if (nowLevel == targetLevel) {
					return;
				}

			} else if (nowLevel == 2) {
				nowLevel += 1;
				System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);

				if (nowLevel == targetLevel) {
					return;
				}

			} else if (nowLevel == 3) {
				int i = (int) (Math.random() * 100);

				if (i < 95) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);

					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					nowLevel -= 1;
					System.out.println("很遺憾,強化失敗,當前您的裝備等級為:" + nowLevel);

				}

			} else if (nowLevel == 4) {
				int i1 = (int) (Math.random() * 100);
				if (i1 < 90) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);

					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					nowLevel -= 1;
					System.out.println("很遺憾,強化失敗,當前您的裝備等級為:" + nowLevel);

				}

			} else if (nowLevel == 5) {
				int i2 = (int) (Math.random() * 100);

				if (i2 < 80) {

					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					nowLevel -= 1;
					System.out.println("很遺憾,強化失敗,當前您的裝備等級為:" + nowLevel);
				}
			} else if (nowLevel == 6) {
				int i3 = (int) (Math.random() * 100);

				if (i3 < 75) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					nowLevel -= 1;
					System.out.println("很遺憾,強化失敗,當前您的裝備等級為:" + nowLevel);
				}
			} else if (nowLevel == 7) {
				int j1 = (int) (Math.random() * 1000);

				if (j1 < 621) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					nowLevel -= 1;
					System.out.println("很遺憾,強化失敗,當前您的裝備等級為:" + nowLevel);
				}
			} else if (nowLevel == 8) {
				int j2 = (int) (Math.random() * 1000);

				if (j2 < 537) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					nowLevel -= 3;
					System.out.println("很遺憾,強化失敗,當前您的裝備等級為:" + nowLevel);
				}
			} else if (nowLevel == 9) {
				int j3 = (int) (Math.random() * 1000);

				if (j3 < 414) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					nowLevel -= 3;
					System.out.println("很遺憾,強化失敗,當前您的裝備等級為:" + nowLevel);
				}
			} else if (nowLevel == 10) {
				int j4 = (int) (Math.random() * 1000);

				if (j4 < 339) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					System.out.println("很遺憾,強化失敗,裝備損壞");
					break;
				}
			} else if (nowLevel == 11) {
				int j5 = (int) (Math.random() * 1000);

				if (j5 < 280) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					System.out.println("很遺憾,強化失敗,裝備損壞");
					break;
				}
			} else if (nowLevel == 12) {
				int j6 = (int) (Math.random() * 1000);

				if (j6 < 207) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					System.out.println("很遺憾,強化失敗,裝備損壞");
					break;
				}
			} else if (nowLevel == 13) {
				int j7 = (int) (Math.random() * 1000);

				if (j7 < 173) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					System.out.println("很遺憾,強化失敗,裝備損壞");
					break;
				}
			} else if (nowLevel == 14) {
				int j8 = (int) (Math.random() * 1000);

				if (j8 < 136) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					System.out.println("很遺憾,強化失敗,裝備損壞");
					break;
				}
			} else if (nowLevel == 15) {
				int j9 = (int) (Math.random() * 1000);

				if (j9 < 101) {
					nowLevel += 1;
					System.out.println("強化成功,當前您的裝備等級為:" + nowLevel);
					if (nowLevel == targetLevel) {
						return;
					}
				} else {
					System.out.println("很遺憾,強化失敗,裝備損壞");
					break;
				}
			}
		}		
	}
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("輸入您的裝備等級:");
		int nowLevel = sc.nextInt();
		System.out.println("輸入您的目標等級:");
		int targetLevel = sc.nextInt();
		Dnf d = new Dnf();
		d.grade(nowLevel, targetLevel);
		
	}
}

測試:
在這裡插入圖片描述
執行以上程式碼輸入當前裝備等級以及目標等級,簡單實現DNF裝備的強化
在這裡插入圖片描述

相關文章