2017-01-21 22 views
2

私はゲーム用のJavaScript電卓を作ろうとしています。あなたが経験を得るほとんどのゲームのように、レベルシステムがあります。経験に基づいた計算レベル

私はレベルを計算したいと思っています。

今私はこれを難しい方法で達成しました。

if(experience < level2Experience){ 
    level = 1; 
} else if(experience >= level2Experience && experience < level3Experience){ 
    level = 2; 
} else if(experience >= level3Experience && experience < level4Experience){ 
    level = 3; 
} 

など。

これを達成するために、より簡潔で難解な方法がありますか?

答えて

0

これを行うには、さまざまな方法があります。ここにいくつかの提案があります。

1)あなたは、単にコードを作成する場合は、見た目が良くlevelxExperienceが限定セットであり、あなたはそれを最適化するために気にしない場合は)この

function isBetween(n, lower, upper) { return n >= lower && n <= upper }; 

2に似ているヘルパーを書くことができ、あなたそして、あなたは、単にそう

var i = expArray.length - 1; 
var level; 
while (i >=0) { 
    if (experience > expArray[i]) { 
     level = i; 
     break; 
    } 
    i--; 
} 

// console.log(level); 
のように後ろから繰り返すことでレベルを取得することができますので、(インデックスがレベル​​を指します)

var expArray = [level2Experience, level3Experience]; 

のように、アレイ内のすべてのlevelxExperienceを保存することができます

1

// levels: 
 
// level 1 => 0 points to 9 
 
// level 2 => 10 points to 19 
 
// .... 
 
var levels = [0,10, 20, 30]; 
 
var level = 0; 
 
var experience = 22; 
 

 
levels.forEach((v, i) => { 
 
    if(experience >= v) { 
 
    level = i+1; 
 
    } 
 
}); 
 

 
console.log(level);

0

私はあなたの経験の上に基づいて、レベルを、計算しているとき、あなたは心の中で式Iの特定の種類を持っていることを考えています。 この経験式は、プレイヤーがどのような経験を積んでいるのかに基づいています。 プレーヤーがレベルアップするにつれて、1つのレベルから別のレベルに成長するのに必要な経験の量に応じて、3つの実装が可能です。 1番目と2番目は何らかの数学関数を使って自動化することができます。 例:

1)レベルが上がるにつれて、1つのレベルから別のレベルに成長するために必要な経験は、一定のままです。 ある意味では、ある人が100のxpを持っていればレベル1、200の場合はレベル2のようになります。 これはレベルが単に経験の量は、特定の変数の関数として別の変更1つのレベルから成長するために必要な

level = experience/100 

2)関数によって定義される数学的な式に変換することができます。 例えば、レベル0からレベル1に行く経験値が100で、レベル1からレベル2までの経験値が1000である場合、数式を考案してシリーズの合計を計算し、レベルにいる人1は少なくとも100以上の経験を持ち、1000 xp未満になります。 これは、以下のように関数に格納することができる:レベルを決定する別のランダムな経験値がある場合に

var lower_xp_limit = 0 
, upper_xp_limit = 0 
, level_count = 0; 

while(player_xp < upper_xp_limit) 
{ 
    lower_xp_limit = 10^level_count*1; 
    upper_xp_limit = 10^(level_count+2)*1; 
    level_count++; 
} 

return level_count-1; 

3)。 次に、単純なスイッチケースを使用して、forループを分割または実装して、データを要素の配列と突き合わせることができます。

関連する問題