[10] Den permanenten Highscore ausgeben

Hey there.
Wie stellst du dir einen Highscore vor?
Ich persönlich denke dabei an eine Art Tabelle in der Spieler je nach Score aufgelistet werden.
Hmm. Den Highscore der User habe ich ja jetzt gespeichert. Nur wie gebe ich ihn wieder aus? Vor allem: wie gebe ich die User sortiert nach der Höhe ihres Highscores wieder aus?

Das Ausgeben des Highscores,
hat sich für mich am Anfang sehr schwer gestaltet. Im ernst. Für mich war das bis jetzt das schwerste Thema.
Ich habe erst versucht für jeden User im Channel den Highscore einzeln auszulesen und den dann in einem eigenen Objekt (Vergleich Blog 6: Telefonbuch) abzulegen.
Natürlich waren die Einträge in meinem Objekt (Telefonbuch) dann noch nicht sortiert.
Also habe ich versucht die Einträge im Objekt mit mehreren for Schleifen zu sortieren… Das war nicht optimal.
Dann habe ich alle Einträge des Objekts (Telefonbuch) in ein Array geladen und dieses mit dem sort Befehl sortiert.
Das war natürlich auch nicht die beste Lösung.
Naja. Du merkst schon, ich bin erst Mal richtig auf die Nase gefallen.

Aber dann hab ich wieder in die API geschaut:
Es gibt in der API eine Klasse die sich UserPersistenceNumbers nennt.
Was ist das?
Die Klasse UserPersistenceNumbers kann helfen gespeicherte Daten aus allen UserPersistence Objekten für alle User deiner App zu „holen“. Du erinnerst dich ja noch, dass jeder User in deiner App ein eigenes PersistenceObjekt hat, oder?

persistence_app_users8_channelScaled
Falls nein: Lies doch nochmal meinen letzten Blogeintrag.

Jetzt stell dir vor in deiner App gibt es mehr als zwei User. Vielleicht schon acht?
Alle User haben ihr eigenes UserPersistence Objekt. Und in jedem Objekt ist der Highscore für den damit verbundenen User gespeichert. Du erinnerst dich, dass der Highscore unter einem Key gespeichert ist?

const PERM_SCORE = "perm_score";

 

memory_key_perm_score

Mit dem UserPersistenceNumbers Objekt und dem Key kann man jetzt all diese Daten auf einmal auslesen und sogar sortieren.
Das macht man so:
userPersistenceNumbers_with_key
Diese Daten sind dann in einem Array gespeichert.

Wie programmiert man das jetzt?

// Mit der Funktion getSortedEntries gibt das UserPersistenceNumbers Objekt (Die Krake) alle Einträge unter dem Key PERM_SCORE = "perm_score" (siehe oben) sortiert zurück.
function printPermScore()
{
var topUser = UserPersistenceNumbers.getSortedEntries(PERM_SCORE, {
ascending: false,
count: 10,
});
for(var i = 0; i<topUser.length; i++){
publicMessage(boldText('['+(i+1)+': ' + topUser[i].getUser() + " Punkte: " + topUser[i].getValue()+']'));
}
}

[1] Ich hole mir erst mit Hilfe des UserPersistenceNumber Objektes (Die Krake) alle Einträge aller User unter dem Key „perm_score“.
[2] Diese werden dann in einem Array namens topUser abgespeichert.
[3] Zum Schluss iteriere ich (Das heißt nichts anderes als durchlaufen) noch über dieses Array und gebe mit der Funktion publicMessage(text), die du ja schon kennst, den Highscore aus.

Das war es dann auch schon fast:
Die Funktion printPermScore() musste ich dann nur noch zum richtigen Zeitpunkt aufrufen.
Ich habe mich dafür entschieden sie vor jeder Runde ein Mal aufzurufen:

function createNewMathEquation()
{
printPermScore();// Hier kommt eigentlich noch der restliche Code der die neue Aufgabe generiert. Aber damit verschone ich dich jetzt.
// Wer den nochmal sehen will kann in meinem dritten Blogeintrag nachlesen.
}

Jetzt mal eine Frage an euch:
Wie soll es mit der KopfTrainer App weitergehen?
Sollte ich sie noch ein wenig aufhübschen? Oder lieber einen neuen Spielmodus oder sogar ein ganz anderes Denkspiel implementieren?
Schreibt mir doch eure Ideen.

Liebe Grüße, MarvinDerPraktikant.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s