ファイブボックス 一分間スクラッチ講座 #003 ハイスコアを更新する方法
Youtube「一分間スクラッチ講座」でおなじみのファイブボックスです。
ここでは動画の内容を、読みやすい文章形式にまとめています。
今回は、スクラッチでゲームを作るときによく使う
「ハイスコアを更新する方法」を紹介します。
敵を倒した数、集めたアイテムの数、クリアまでにかかった時間など、ゲームではいろいろな「記録」を扱います。
その中でも、これまでの最高記録を保存しておく仕組みが
ハイスコアです。
1. 事前準備
まず、変数を2つ用意します。
スコア
ハイスコア

「スコア」は、今回のプレイで獲得した点数を入れる変数です。
「ハイスコア」は、これまでの最高記録を入れておく変数です。
実際のゲームでは、敵を倒したり、アイテムを取ったりしたときにスコアが増えていきます。
ただし、今回はハイスコア更新の仕組みをわかりやすく確認するため、
スペースキーを押したら、1〜100までのランダムなスコアが入るようにしておきます。
任意のスプライトを選択して、次のようなスクリプトを作ります。
スペースキーが押されたときの処理
スペースキーが押されたとき、
「〇から△までの乱数」ブロックを使って、1〜100までの乱数を取得する
その値を変数「スコア」に入れる
「スコア 〇」と2秒言う

このようにしておくと、スペースキーを押すたびにランダムなスコアが作られます。
※実際のゲームでは、この乱数の処理は必要ありません。
通常は、ゲーム中やゲーム終了時に、そのゲームで獲得したスコアを使ってハイスコアを判定します。
2. ケース1:スコアが高い方がよい記録の場合
まずは、一般的なハイスコアの考え方です。
たとえば、
倒した敵の数
集めたコインの数
獲得したポイント
正解した問題数
このようなゲームでは、スコアが高いほど良い記録になります。
この場合は、今回のスコアと、これまでのハイスコアを比べます。
もし、今回の「スコア」が「ハイスコア」より大きければ、
ハイスコアを更新します。
考え方
ゲーム終了のタイミングで、
もし「スコア」>「ハイスコア」なら
「ハイスコア更新!」などと表示する
変数「ハイスコア」に、今回の「スコア」を入れる

これで、これまでの記録より高いスコアを取ったときだけ、ハイスコアが更新されます。
3. ケース2:スコアが小さい方がよい記録の場合
次に、少し考え方が変わるパターンです。
たとえば、
ゴールまでにかかった時間
すべての敵を倒すまでの時間
クリアまでの手数
ミスの回数
このような場合は、数字が小さい方が良い記録になります。
この場合、「ハイスコア」というよりは、
ベストタイムや最短記録と呼んだ方が自然です。
ただし、仕組みとしてはハイスコア更新とほとんど同じです。
最初の値に注意
スコアが小さい方がよい記録の場合、最初に変数「ハイスコア」に
とても大きな数字を入れておく必要があります。
たとえば、ハイスコアを最初に「9999」にしておきます。
なぜなら、最初の記録が必ず更新されるようにするためです。
もし最初のハイスコアが「0」だった場合、
今回のスコアが「10」や「30」でも、0より小さくないため、記録が更新されません。
そのため、最初は「9999」のような大きな数字にしておくのがポイントです。
考え方
ゲーム終了のタイミングで、
もし「スコア」<「ハイスコア」なら
「記録更新!」などと表示する
変数「ハイスコア」に、今回の「スコア」を入れる

これで、より小さい記録が出たときだけ、記録が更新されます。
4. 高い方がよいのか、小さい方がよいのかを考えよう
ハイスコアの更新で大切なのは、
そのゲームでは、数字が大きい方が良いのか、小さい方が良いのかを考えることです。
ポイントやコインの数なら、大きい方が良い記録です。
クリア時間やミスの数なら、小さい方が良い記録です。
この違いによって、使う比較の向きが変わります。
高い方がよい場合:スコア > ハイスコア
小さい方がよい場合:スコア < ハイスコア
この2つを使い分けるだけで、いろいろなゲームの記録更新に対応できます。
まとめ
ハイスコアの更新は、考え方がわかれば比較的シンプルなプログラムです。
今回のポイントは次の3つです。
今回の記録を入れる「スコア」を用意する
これまでの最高記録を入れる「ハイスコア」を用意する
ゲーム終了時に、スコアとハイスコアを比較する
スコアが高い方がよいゲームでは、
スコアがハイスコアより大きいときに更新します。
タイムアタックのように数字が小さい方がよいゲームでは、
スコアがハイスコアより小さいときに更新します。
この仕組みを覚えておくと、スクラッチで作るゲームに「記録更新」の楽しさを追加できます。
ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。
いいなと思ったら応援しよう!
よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!