2014-02-19 70 views
0

我正在學習一些應用程序大廈的過程中的Android。存儲時間baset highscore

我想創建一個高分系統的例子,然後嘗試在遊戲中使用它。

可以說我有一個運行秒和停止按鈕的計時器。如果我按停止按鈕,定時器停止,並且它所來的號碼被保存(本地)到一個高分列表。例如,前5名。

我該如何去拯救這個高分?

我已經讀了一些關於SQLite和共享首選項,但我不知道要使用什麼。也許還有更多的選擇?我不在尋找任何在線高分榜。

如果你知道一些很好的指南/教程,請將它們鏈接到我。

  • 謝謝。
+0

對於本地高分列表,只是存儲前5名,你應該只使用一個文件。 –

回答

1

我使用SharedPreferences來處理這種事情,儘管在我看來這有些過於複雜。一旦你將它添加到你的清單並找出如何使用它,但是,它相當簡單。它看起來像SharedPreferences的用法已經在這裏被覆蓋:How to use SharedPreferences in Android to store, fetch and edit values。當然,你也可以保存到一個文件中,這可能會更容易,但如果你在意的話可能更容易破解。我不太瞭解SQLight對此做出評論。

1

是的共享偏好將適合此。這是一個開球的例子 - 但更好的使用名單:

private static final String[] SCORES_KEYS = { "1", "2", "3", "4", "5" }; 
private static final int SCORES = 5; 
//... 
{ 
    SharedPreferences sp = getDefaultSharedPreferences(); // in an activity, 
    // service or other context. DO NOT USE NAMED preferences 
    final long timer = getYourTimerScore(); 
    int position = SCORES; 
    long[] lowerScores = new long[SCORES + 1]; 
    for (int i = SCORES; i > 0;) { 
     long j = sp.getLong(SCORES_KEYS[--i], 0); 
     if (j < timer) { 
      --position; 
      lowerScores[i + 1] = j; 
     } else break; 
    } 
    if (position < SCORES) { 
     lowerScores[position] = timer; 
     Editor ed = sp.edit(); 
     for (int i = position; i < SCORES; ++i) { 
      ed.putLong(SCORES_KEYS[i], lowerScores[i]); 
     } 
     ed.commit(); 
    } 
}