次はハイスコアの記録処理を作る。
外部ファイルの読み込み、書き込みの練習として、ハイスコアの記録を題材にした。
テキストファイルに、1行ずつゲームモードごとの点数を書き込んでおき、それを読み込んで、ハイスコアの配列に入れるようにしてみた。
noteset命令で読み込み用のバッファを確保。noteload命令でファイルを読み込む。
読み込んだファイルは、行単位で取得、上書きができる。行数はnotemaxに入っているので、ループを回すときの回数にする。
noteget命令で、読み込んだ行の情報を読み込んで、ハイスコアの配列に代入する。
うん。うまくいった。
;ファイルからハイスコアを読み込んでセットする notesel filebuf noteload "hiscore.txt" dim hiscore,2 ;ハイスコア repeat notemax noteget buf,cnt hiscore(cnt)=int(buf) loop noteunsel
しかし、Windowsでは読み書きできるのに、Androidでは読み込みしかできない。
そこで別の方法で保存することにした。
bsave命令、bload命令で、バイト単位で保存、読み込みをする。
配列変数をそのままbsave命令で保存、bload命令で読み込むサンプルがあったので、簡単に作れた。
exist命令を使うと、ファイルの存在有無を判定できる。
まず、ファイルが存在するかを確認して、なければ、スコアを0にしてファイルを保存。
存在したら、読み込んで、ハイスコアの配列にセットする。
;ファイルからハイスコアを読み込んでセットする dim hiscore,2 ;ハイスコア exist "hiscore.dat" if strsize>0 { bload "hiscore.dat",hiscore } else { ;ファイルがなければいったん保存して作成 hiscore=0,0 bsave "hiscore.dat",hiscore }
この方法なら、Androidでもハイスコアが保存、読み込みできた。
ファイルは、Windowsだと同じフォルダ内に、Androidだとアプリのデータ領域に保存される(らしい)