2010-05-11 2 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

Спасибо, я попробую, я искал что-то подобное, спасибо Хантеру и спасибо всем, кто пробовал! И извините за непонятный вопрос - я не очень хорошо знаю английский :( – coolboycsaba

+0

Упс! Я имею в виду pheelicks: D – coolboycsaba

+0

Спасибо, что заметили серийную часть чисел, я не понял вопроса таким образом. – CodeJoust

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

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

i-i выглядит как опечатка; также длина вместо длины – Alsciende

+0

Исправлены опечатки, спасибо за сигнализацию, хотя вопрос изменился – Eineki

Смежные вопросы