2017-02-25 47 views
0

在我的GamePanel.java類中,我有一個整數「best」,意思是記錄遊戲中的最高分數。但每次關閉並重新打開遊戲時,該值都會重置爲零。 我就如何落實在我game.Here的SharedPreferences是我GamePanel.Java如何在我的遊戲中實現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); 

如何使用SharedPreferences保存詮釋「最好」的相關部分不知道?

回答

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