我正在學習一些應用程序大廈的過程中的Android。存儲時間baset highscore
我想創建一個高分系統的例子,然後嘗試在遊戲中使用它。
可以說我有一個運行秒和停止按鈕的計時器。如果我按停止按鈕,定時器停止,並且它所來的號碼被保存(本地)到一個高分列表。例如,前5名。
我該如何去拯救這個高分?
我已經讀了一些關於SQLite和共享首選項,但我不知道要使用什麼。也許還有更多的選擇?我不在尋找任何在線高分榜。
如果你知道一些很好的指南/教程,請將它們鏈接到我。
- 謝謝。
我正在學習一些應用程序大廈的過程中的Android。存儲時間baset highscore
我想創建一個高分系統的例子,然後嘗試在遊戲中使用它。
可以說我有一個運行秒和停止按鈕的計時器。如果我按停止按鈕,定時器停止,並且它所來的號碼被保存(本地)到一個高分列表。例如,前5名。
我該如何去拯救這個高分?
我已經讀了一些關於SQLite和共享首選項,但我不知道要使用什麼。也許還有更多的選擇?我不在尋找任何在線高分榜。
如果你知道一些很好的指南/教程,請將它們鏈接到我。
我使用SharedPreferences來處理這種事情,儘管在我看來這有些過於複雜。一旦你將它添加到你的清單並找出如何使用它,但是,它相當簡單。它看起來像SharedPreferences的用法已經在這裏被覆蓋:How to use SharedPreferences in Android to store, fetch and edit values。當然,你也可以保存到一個文件中,這可能會更容易,但如果你在意的話可能更容易破解。我不太瞭解SQLight對此做出評論。
是的共享偏好將適合此。這是一個開球的例子 - 但更好的使用名單:
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();
}
}
對於本地高分列表,只是存儲前5名,你應該只使用一個文件。 –