いざという時の為にバックアップを取っておき、いざ記述……
多少問題はあったものの、今回は珍しくもエラーはあまり起きなかった。
「使い方が分かっただけで、こうも簡単にできてしまうものなのか……?」
と、ちょっと大袈裟だけど本当に思った。
今回追加したコード。
ファイル操作の変数fp、数値0で初期化したフラグ用の変数hatu(この変数はファイル操作以外で使う)を宣言して、ファイル score.dat をオープン。この時にNULLが帰ってきた(ファイルがなかった)場合は新しく作成し、変数scoreの初期値0をファイルに出力する。
トラブル(?)回避のため、一旦ファイルを閉じてアクセスを切る。
ただ、厳密にはこれだけでトラブルが防げる訳ではなく。
ゲーム中はファイルにアクセスしていないので、この時に万が一データを削除したりしてしまうと、最悪の場合はゲーム中のデータが保存されずに消えてしまう……ということになる。
プレイヤーがやってしまう可能性が無いわけではないので、それを防ぐためにもファイルを閉じるのは最後にした方がいいのか……
でも、それだと×ボタンで閉じられた時にアクセスされっぱなしになるので、寧ろこちらの方が危険だと思う。
ベストは×ボタンをクリックされたときの動作を指定できる事で。
これでファイルを閉じるようにできれば最低限トラブルの元は回避できそうだけど……コンソールアプリケーションで使えるコードってあったっけ?
……とりあえず今は置いとくか。
ファイルがある場合はオープンしたファイルから数値を読み取り、変数scoreに代入。
ゲームを始めて最初の一回のみ、ハイスコアを表示する。
ゲームが終わって、結果発表の部分。正解数(s_c)がハイスコア(score)よりも多ければ「ハイスコア!」と表示し、正解数の値をハイスコアに代入。
その後、scoreの値をファイルに出力する。
再度挑戦する場合も、最初の一回はハイスコアを表示するので「もう一度」を選ばれた所で変数hatuも0に戻す処理を追加。そして実行。
最初はハイスコアが表示される。
一度出たタイミングで、if文によって変数hatuの値が1になる(0でなくなる)ので、次からはハイスコアが表示されなくなる。
最初のハイスコアは0なので、当然だけど今回のはハイスコアとなるwここではちゃんと文章が表示されるかどうかの確認だけ。
どうやら直感(?)で入力すれば割りと当たるようで。
今回は6回正解できた。
「もう一度」を選択し、ハイスコアが記録されているかを確認。
ちゃんと記録されていた。でも終わった後のハイスコア、実は終わる度に絶対表示されるんじゃ……?
ということで実験。
記録を更新しなかった場合は表示されない。よかった、ちゃんと動作してるみたいだ。
あとは一旦閉じて、再び起動したときにデータを読み込んで表示するかどうか。
ちゃんと読み込んでくれたようだ。おーし、できたできた!
(この時は嬉しかった)
まだやってみたい処理は残ってるものの、このゲームでつけたい要素は一通りつけた。
これが絵になって動くように……つまりグラフィカルな画面になると、もっと面白かったりするのかな、と思いつつ──
ここをひとまずの区切りとして、よろしければ皆さんにもプレイしていただきたいと思う。
ということで、この学習で作り上げたプログラムを、一つのアプリケーションにして配布したいと思います!
もちろん無料です。
感想等いただけるとうれしいです。
ダウンロードページへ
よろしければこちらもどうぞ。
ゲーム制作サイト Darless