ハイスコア テーブル用の SQLite db があります。現在、新しいスコアがハイスコアになるかどうかの確認と、ハイスコア テーブルの並べ替えに問題があります。
ゲームが終了すると、Results.java が呼び出されます。
結果.java
total_score = dh.calculateTotalScore(score, percentage);
low_score = dh.check(score, percentage, total_score);
if(total_score > low_score) {
dh.delete(10);
dh.insert(score, percentage, total_score);
} else {
dh.insert(score, percentage, 9999999);
}
dh.sort();
で呼び出されるすべてのメソッドResults.java
は から来ていDatabaseHelper.java
ます。
DatabaseHelper.java
public void sort() {
db.rawQuery("SELECT * FROM " + DB_TABLE + " ORDER BY " + TOTAL_SCORE, null);
}
public long calculateTotalScore(long score, int percentage) {
long i;
return i = (percentage * 1000) + score;
}
public long check(long score, int percentage, long sum) {
Cursor c = db.rawQuery("SELECT " + TOTAL_SCORE + " FROM " + DB_TABLE, null);
long count = c.getCount();
long low_score;
if(count == 10) {
c.moveToLast();
low_score = c.getInt(c.getColumnIndex(TOTAL_SCORE));
return low_score;
} else {
return count;
}
}
public long insert(long score, int percentage, long total_score) {
ContentValues values = new ContentValues();
values.put(SCORE, score);
values.put(PERCENTAGE, percentage);
values.put(TOTAL_SCORE, total_score);
return db.insert(DB_TABLE, null, values);
}
public void delete(int row) {
db.delete(DB_TABLE, RANK + "=" + row, null);
}
TOTAL_SCORE の出力は次のように表示されます。
- 1
- 2
- 40851
- 1
- 2
- 40804
- 60811
- 60811
- 50816
私が望むのは、出力が番号順にあることです。このような:
- 1
- 1
- 2
- 2
- 40804
- 40851
- 50816
- 60811
- 60811
上記の順序は、(私が思うに) データベースに挿入された順序です。プログラムの実行時にエラーは発生せず、プログラムはクラッシュしません。必要に応じて、追加のコードを提供できます。