2017-10-19 32 views
0

Je sais que j'ai déjà posé cette question auparavant, mais je ne reçois plus de réponse ... Je voudrais, dès que j'ai perdu dans mon jeu, afficher mon HighScore. Voici le code:libGDX: Utiliser les préférences pour les meilleurs scores

protected Preferences HighScore() { 

    if (score > highscore) { 
     prefs.putInteger("highscore", score); 

     this.highscore = prefs.getInteger("highscore", 0); 

     prefs.flush(); 
    } 
    return prefs; 
} 

Mais si je lance ma demande, que cette erreur est affiché:

Exception in thread "LWJGL Application" java.lang.NullPointerException 
at de.firstdemo.game.states.PlayState.HighScore(PlayState.java:641) 
at de.firstdemo.game.states.PlayState.render(PlayState.java:601) 
at de.firstdemo.game.states.GameStateManager.render(GameStateManager.java:50) 
at de.firstdemo.game.RiskyDemo.render(RiskyDemo.java:37) 
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:225) 
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:126) 

Je regardais dans le Web, mais n'a pas pu trouver une solution ...

Merci pour vos réponses! :)

Répondre

0

d'abord vous obtenez l'objet:

Preferences preferences = Gdx.app.getPreferences("My preferences"); 

Puis, quand vous perdez dans votre jeu, vous obtenez la valeur. Je vérifie habituellement si je perds dans la méthode de rendu avec un booléen. Dans ce cas, vous comparez votre highscore avec votre score:

if(IsGameFinished) 
{ 
    int highscore = preferences.getInteger("High score",0); 
    if(highscore>=yourCurrentScore) 
    { 
      // display highscore 
    } 
    else 
    { 
      // display yourCurrentScore 
     preferences.putInteger("High score", yourCurrentScore); 
     preferences.flush(); 
    } 
} 

De plus dans votre code d'erreur:

protected Preferences HighScore() { 

if (score > highscore) { 
    prefs.putInteger("highscore", score); 
    prefs.flush(); // YOU SHOULD FLUSH BEFORE! 
    this.highscore = prefs.getInteger("highscore", 0); 
} 
return prefs; 
} 

Et, pourquoi ne vous retournez les préférences? Retourner votre highscore comme int devrait être meilleur.