2017-01-21 4 views
2

Ich versuche, einen JavaScript-Rechner für ein Spiel zu machen. Wie bei den meisten Spielen, bei denen du Erfahrungen sammelst, gibt es ein Level-System.Berechnung basierend auf Erfahrung

Also für eine bestimmte Erfahrung Menge möchte ich das Niveau berechnen.

Gerade jetzt habe ich das auf die harte Tour erreicht.

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

Und so weiter.

Gibt es eine prägnantere, weniger mühsame Art, dasselbe zu erreichen?

Antwort

0

Es gibt viele Möglichkeiten, dies zu tun. Hier sind ein paar Vorschläge.

1) Wenn Sie einfach den Code aussehen zu wollen schöner Sie einen Helfer schreiben können, die diese

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

2 ähnelt) Wenn levelxExperience eine begrenzte Menge ist und Sie kümmern sich nicht, es zu optimieren, Sie alle levelxExperience in einem Array speichern kann, wie so (wobei bezieht sich Index auf Ebene)

var expArray = [level2Experience, level3Experience]; 

dann können Sie die Ebene erhalten, indem einfach wie so

von der Rückseite Iterieren
var i = expArray.length - 1; 
var level; 
while (i >=0) { 
    if (experience > expArray[i]) { 
     level = i; 
     break; 
    } 
    i--; 
} 

// console.log(level); 
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

Ich denke ich, dass das, wenn Sie die Berechnung Ebene, basierend auf der Erfahrung, können Sie eine bestimmte Art einer Formel im Kopf haben. Diese Formel für Erfahrung basiert auf der Art von Aufgaben, die der Spieler ausführt, was ihm Erfahrung bringt. Je nachdem, wie sich die Erfahrung, die erforderlich ist, um von einem Level zum nächsten zu wachsen, ändert, wenn der Spieler auflevelt, kann es 3 mögliche Implementierungen geben. 1. und 2. davon können mit mathematischen Funktionen automatisiert werden. Zum Beispiel:

1) Die Erfahrung, die erforderlich ist, um von einer Ebene zur nächsten zu wachsen, bleibt konstant, wenn eine Person aufleuchtet. Was in gewisser Weise bedeutet, dass, wenn eine Person 100 xp hat, er Level 1 ist, wenn er 200 hat, dann ist er Level 2 und so weiter. Dies kann zu einer mathematischen Formel umgewandelt werden, in denen die Werte werden einfach durch eine Funktion definiert, wo

level = experience/100 

2) Die Menge an Erfahrung erforderlich ist, um von einer Ebene zu wachsen, um weitere Änderungen in Abhängigkeit von bestimmten Variablen. Zum Beispiel, wenn die erforderliche Erfahrung von Level 0 zu 1 ist 100, aber von Level 1 zu Level 2 ist 1000. Dann können wir eine mathematische Formel entwickeln, um die Summe der Serie zu berechnen und sehen, dass eine Person auf der Ebene ist 1 wird mindestens 100 oder mehr Erfahrung haben und es wird weniger als 1000 XP sein. Dies kann in einer Funktion gespeichert werden, wie folgt:

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) Für den Fall, gibt es verschiedene zufällige Erfahrungswerte, die das Niveau bestimmen. Dann können Sie einen einfachen Schalter Fall, der bricht oder implementieren eine for-Schleife, um die Daten mit einem Array von Elementen übereinstimmen.

Verwandte Themen