2010-05-11 294 views
0

我試圖用javascript創建積分計算系統,但問題出在數學部分。我已經在服務器上保存了點數,並根據這個數字來決定這個級別。對不起,我的英文不好,我不能很好地解釋:D。我想要的東西是這樣的:level 1 need 0 points level 2 needs 100 points level 3 needs 240 points level 4 needs 420 points level 5 needs 640 points 等等...... 我需要一個數學函數來計算它的每個級別。如果我知道計算所需點數的級別,以及是否只知道計算級別的點數。Javascript積分計算系統

回答

2

要生成您提供使用的系列:

function getPoints(level) 
{ 
    return 20*(level-1)*(level+3); 
} 

要想從水平這些要點有點棘手,您需要使用二次公式反轉上述公式,然後採取正解:

function getLevel(points) 
{ 
    var level = -1 + Math.sqrt(4 + points/20); 

    // Round down to nearest level 
    return Math.floor(level); 
} 

此外,在未來嘗試使問題更清晰。正如你可以看到三個人(至少)誤解了你的問題 - 你不清楚你的關卡是一個數學系列。

+0

謝謝,我會試試看,感謝Hunter,感謝所有嘗試過的人!對不清楚的問題 - 我不太清楚英文:( – coolboycsaba 2010-05-11 17:03:10

+0

Ups!我的意思是pheelicks:D – coolboycsaba 2010-05-11 17:12:16

+0

感謝您注意數字的系列部分,我沒有以這種方式理解這個問題。 – CodeJoust 2010-05-12 01:24:12

1

嗯,我中有你打算什麼

var levels = [0, 100, 240, 420, 640]; 

function GetLevel(points) 
{ 
    for(i == levels.length - 1; i >= 0; i--) 
    { 
     if (points >= levels[i]) return i + 1;   
    }   
} 

點至一個新的水平

function PointsToNextLevel(currentPoints) 
{ 
    var level = GetLevel(currentPoints); 
    if (level == levels.length) return 0; 
    return levels[level - 1] - currentPoints; 
} 
2
var levels = { 
1: 0, 
2: 100, 
3: 240, 
4: 420, 
5: 640} 
function get_level(points){ 
    for (level in levels){ 
     if (points < levels[level]){ 
      return level - 1; 
     } 
    } 
} 

大概知道這只是簡單地採用水平哈希,並通過各級itenerates ,直到分數高於最低水平,返回最後一級。

+0

雖然這適用於給定的數字,但我認爲OP希望爲他提供的系列文章提供一個通用的解決方案。看到我的答案 – pheelicks 2010-05-11 14:19:01

1

這個功能應該解決您的問題,對我來說,似乎很容易理解:

function getLevel(points) 
{ 
    var levels = [0,100, 240, 420, 640]; 
    var maxLevel = levels.length; 
    var i; 
    for (i=0;i<maxLevel;i++) { 
     if (levels[i]>points) return i; 
    } 
    return maxLevel; 
} 
+0

我 - 我看起來像一個錯字;也長度而不是長度 – Alsciende 2010-05-11 14:02:15

+0

更正了錯別字,感謝他們發信號,雖然問題改變了 – Eineki 2010-05-11 17:07:43