LoginSignup
0
0

More than 1 year has passed since last update.

【JavaScript】ある音楽ゲームのボーダー許容を計算する

Last updated at Posted at 2022-01-13

某音ゲーでは、1,010,000点を上限に判定の善し悪しによってスコアが減少していく。
具体的にはすべてのノーツで最高評価をとれば1,010,000点となるが、それ以下の評価を取るとそのたびにスコアが減少する。

100万/総ノーツ数でそれぞれのノーツの基礎点が決まったのち、
評価によって以下のようにスコアへ影響する。

  • JUSTICE CRITICAL:基礎点×101%
  • JUSTICE:基礎点×100%
  • ATTACK:基礎点×50%
  • MISS:基礎点×0%

計算式さえわかってしまえば、総ノーツ数とスコアから何個JUSTICEを出したかを計算することができる。

あくまでJUSTICEの数のみを計算するが、ATTACKJUSTICE 51個分、MISSJUSTICE 101個分となるので読み変えは可能。

以上を加味するとJUSTICE以下の数を算出する計算式は以下となる。
floor(総ノーツ数 * ((1010000 - スコア) / 10000))

floorは切り捨てを意味する。

sample.js
//計算を行う関数
function Calc(notes, score) { //総ノーツ数とスコアを参照する
  const lost = Math.floor(notes * ((1010000 - score) / 10000));
  return lost; //JUSTICEの数
};
//例 ノーツ数1311、スコア1009923点の場合、1311 * 0.0077(101 - 100.9923)を切り捨てして10という値が得られる。


//楽曲データを定義する
const music = {
  notes: 1311, //総ノーツ数を設定
  score: 1009923 //スコアを設定
};
const justice = Calc(music.notes, music.score); //総ノーツ数とスコアを渡す

console.log("JUSTICEの数", justice); //例 JUSTICEの数 10

また、スコアの部分を1007500などにするとSSSボーダーなどを計算することもできる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0