Frage

Ich habe die folgende Funktion:

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

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

Die obige Funktion das Niveau eines Spielers auf ihren Punkten basierend berechnet, mein Problem ist, dass ich eine Funktion wie diese benötigen, um die Punkte zu berechnen für ein gegebenes Niveau benötigt wird.

War es hilfreich?

Lösung

Math.sqrt(4 + points/20) =        level + 1

          4 + points/20  =       (level + 1)^2

              points/20  =       (level + 1)^2 - 4

              points     = 20 * ((level + 1)^2 - 4)
                         = 20 * ((level^2 +  2*level + 1) - 4)
                         = 20 * ( level^2 +  2*level - 3     )
                         = 20 *   level^2 + 40*level - 60

Andere Tipps

Die Umkehrung dieser Funktion wäre:

points = ((level + 1)**2 - 4) * 20

(wobei ** ist die Stromführung).

level = -1 + (4 + points / 20) ** 0.5
level + 1 = (4 + points / 20) ** 0.5
(level + 1) ** 2 = 4 + points / 20
(level + 1) ** 2 - 4 = points / 20
20 * ((level + 1) ** 2 - 4) = points

Sollte recht einfach sein, nur für Punkte lösen:

               level              = -1 + Math.sqrt(4 + points / 20)
               level + 1          =      Math.sqrt(4 + points / 20)
      Math.pow(level + 1, 2)      =                4 + points / 20
      Math.pow(level + 1, 2) - 4  =                    points / 20
20 * (Math.pow(level + 1, 2) - 4) =                    points

So:

points = 20 * (Math.pow(level + 1, 2) - 4)
  

20 (L + 1) 2 - 80

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top