2017-02-25 5 views
0

私のGamePanel.javaクラスには、最高のスコアを記録するための「最高」の整数があります。しかし、ゲームを閉じて再オープンするたびに、値はゼロにリセットされます。 私はgame.HereにSharedPreferencesを実装する方法については考えているが、私のGamePanel.Java私はint型「最高」を保存するためにSharedPreferencesを使用するにはどうすればよい私のゲームでSharedPreferencesを実装する方法

public class GamePanel extends GLSurfaceView implements SurfaceHolder.Callback 
{ 
private int best; 

public void update() { 

if(player.getScore()>best) { 
     best = player.getScore(); 
    } 
} 
} 
public void drawText(Canvas canvas) 
{ 
    Paint paint = new Paint(); 
    paint.setColor(Color.rgb(255,211,38)); 
    paint.setTextSize(15); 
    paint.setTypeface(Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD)); 
    canvas.drawText("FUEL: " + distance, 10, HEIGHT - 10, paint); 
    canvas.drawText("BEST: " + best, WIDTH - 215, HEIGHT - 10, paint); 
    canvas.drawText("SCORE: " + player.getScore(), 350, HEIGHT - 10, paint); 

の関連部分ですか?優先して

答えて

3

あなたは保存し、それぞれの共有設定から最高のスコアを取得するためにsetBestScore()とgetBestScore()を使用することができます。アップデートで

private void setBestScore(int bestScore) { 
    SharedPreferences.Editor editor = getContext().getSharedPreferences("gamepanel", MODE_PRIVATE).edit(); 
    editor.putInt("bestScore", bestScore); 
    editor.apply(); 
} 

private int getBestScore() { 
    SharedPreferences prefs = getContext().getSharedPreferences("gamepanel", MODE_PRIVATE); 
    return prefs.getInt("bestScore", 0); 
} 

()

if(player.getScore() > getBestScore()) { 
    setBestScore(player.getScore()); 
} 

あなたが初めてゲームをプレイすると最高のスコアを保存する必要があります。

+0

コードが機能しません – Kennedy

+0

どうしますか? –

+0

エラーコードはありませんが、ゲームは実行されますが、スコアはまだ終了時にリセットされます – Kennedy

0

設定値:

public void update() 
{ 
    String MY_PREFS_NAME = "best_score"; 

    if(player.getScore()>best) 
    { 
     best = player.getScore(); 

     SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit(); 
     editor.putString("best", ""+best); 
     editor.apply(); 
    } 
} 

が嗜好からデータを取得:

public String getBestScore() 
{ 
    String MY_PREFS_NAME = "best_score"; 

    SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
    String bestScore = prefs.getString("best", ""); 

    return bestScore; 
} 

詳細:

Using Shared Preferences

Shared Preferences

+0

検索コードはどこに追加する必要がありますか? – Kennedy

+0

あなたが最高の得点を得たい場合は、 'getBestScore()'メソッドを呼び出してください。私の更新された答えを見てください。 – Shailesh

+0

あなたのコードを追加しましたが、動作しませんgetSharedPrefrencesが赤で強調されています – Kennedy

関連する問題