package logbook.util; import logbook.internal.ExpTable; import logbook.internal.PracticeEvaluateExp; /** * 経験値を計算するutilです * */ public class CalcPracticeExpUtils { /** * 演習で得られる経験値を計算します * * @param firstLevel 旗艦レベル * @param secondLevel 2艦目レベル * @param eval 評価倍率 * @param isFlagship 旗艦 * @param isMvp MVP * @return 得られる経験値 */ public static int getExp(int firstLevel, int secondLevel, double eval, boolean isFlagship, boolean isMvp) { if ((firstLevel < 1) || (firstLevel > ExpTable.MAX_LEVEL) || (secondLevel < 1) || (secondLevel > ExpTable.MAX_LEVEL)) { return 0; } double baseexp = Math.floor((ExpTable.get().get(firstLevel) / 100.0) + (ExpTable.get().get(secondLevel) / 300.0)); if (baseexp > 500) { baseexp = Math.floor(500 + Math.sqrt(baseexp - 500)); } // 得られる経験値 double getexpd = Math.floor(baseexp * eval); if (isFlagship) { getexpd *= 1.5; } if (isMvp) { getexpd *= 2; } return (int) Math.floor(getexpd); } public static void main(String[] args) { int f = 149, s = 150; String[] ranks = { "S勝利", "A勝利", "C戦術的敗北", "D敗北" }; for (String r : ranks) { System.out.println(r); System.out.println("基本経験値:" + CalcPracticeExpUtils.getExp(f, s, PracticeEvaluateExp.get().get(r), false, false)); System.out .println("旗艦:" + CalcPracticeExpUtils.getExp(f, s, PracticeEvaluateExp.get().get(r), true, false)); System.out.println("MVP:" + CalcPracticeExpUtils.getExp(f, s, PracticeEvaluateExp.get().get(r), false, true)); System.out.println("旗艦&MVP:" + CalcPracticeExpUtils.getExp(f, s, PracticeEvaluateExp.get().get(r), true, true)); System.out.println("-------------"); } } }