“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

152.HSPでゲームを作ろう:技術研究 データベースを使ってみる その3

テーブルを作成したら、次はレコードを登録する。
これもsql_q命令でSQL文を実行するだけ。

SQLでレコードを追加するには、INSERT文を使う。文法はSQLiteでも一般的な構文でよさそう。

INSERT INTO scorelist (score,score_name,stage,rec_date) VALUES (100,'ALX','10',datetime('now','localtime'))

INSERT文は、INTOの後にテーブル名、カッコ内に更新したいカラム名、VALUESの後に各カラムに対応する登録したい値をセットする。

培養臼Exでは、ゲームオーバー時にハイスコアがトップ10に入ったら、ネームエントリー画面にして、データベースにINSERT文で追加しよう。

データベースには、適当なレコードを登録しておき、ハイスコアのトップテンを表示するための準備をしておいて、今度はデータを取得する。
データベースからデータを取得するには、SELECT文を使う。
全データを取得するのは無駄なので、上位10レコードだけを取得する。

SELECT * FROM scorelist ORDER BY score DESC ,rec_date LIMIT 10

SELECTの後には、カラム名を書くんだけど、*で全カラムの指定。FROMはテーブル名。
ORDER BYは、並べ替え。カラム名を書いてやるとその中の値で並べ替えてくれる。
DESCのキーワードは降順。これで、スコアの高い順に並べてくれる。
最後は、LIMIT句。これで何レコード取得するかを制限できる。LIMIT 10と書いておけば、スコアのトップテンが取得できる。

こうして実行したSQLの結果は、件数がstatに、それ以外は指定した変数に格納される。
変数指定を外せば、共通でtmparrという変数に入れてくれるので、よほどのことがなければ、省略でいい。
あとは、ループを回して、表示、次のレコードに進めると処理すれば、ハイスコアランキングが出来上がる(だろう)

sql_q "SELECT * FROM scorelist ORDER BY score DESC ,rec_date LIMIT 10"
count = stat

repeat count
  mes "score="+sql_v("score")
  sql_next
loop

培養臼に組み込むなら、この程度のテストで大丈夫かなぁ。