見出し画像

ファイブボックス 一分間スクラッチ講座 #003 ハイスコアを更新する方法

Youtube「一分間スクラッチ講座」でおなじみのファイブボックスです。
ここでは動画の内容を、読みやすい文章形式にまとめています。

今回は、スクラッチでゲームを作るときによく使う
「ハイスコアを更新する方法」を紹介します。

敵を倒した数、集めたアイテムの数、クリアまでにかかった時間など、ゲームではいろいろな「記録」を扱います。

その中でも、これまでの最高記録を保存しておく仕組みが
ハイスコアです。


1. 事前準備

まず、変数を2つ用意します。

  • スコア

  • ハイスコア

変数スコアとハイスコア

「スコア」は、今回のプレイで獲得した点数を入れる変数です。
「ハイスコア」は、これまでの最高記録を入れておく変数です。

実際のゲームでは、敵を倒したり、アイテムを取ったりしたときにスコアが増えていきます。

ただし、今回はハイスコア更新の仕組みをわかりやすく確認するため、
スペースキーを押したら、1〜100までのランダムなスコアが入るようにしておきます。

任意のスプライトを選択して、次のようなスクリプトを作ります。


スペースキーが押されたときの処理

スペースキーが押されたとき、

  1. 「〇から△までの乱数」ブロックを使って、1〜100までの乱数を取得する

  2. その値を変数「スコア」に入れる

  3. 「スコア 〇」と2秒言う

このようにしておくと、スペースキーを押すたびにランダムなスコアが作られます。

※実際のゲームでは、この乱数の処理は必要ありません。
通常は、ゲーム中やゲーム終了時に、そのゲームで獲得したスコアを使ってハイスコアを判定します。


2. ケース1:スコアが高い方がよい記録の場合

まずは、一般的なハイスコアの考え方です。

たとえば、

  • 倒した敵の数

  • 集めたコインの数

  • 獲得したポイント

  • 正解した問題数

このようなゲームでは、スコアが高いほど良い記録になります。

この場合は、今回のスコアと、これまでのハイスコアを比べます。

もし、今回の「スコア」が「ハイスコア」より大きければ、
ハイスコアを更新します。


考え方

ゲーム終了のタイミングで、

もし「スコア」>「ハイスコア」なら

  1. 「ハイスコア更新!」などと表示する

  2. 変数「ハイスコア」に、今回の「スコア」を入れる

これで、これまでの記録より高いスコアを取ったときだけ、ハイスコアが更新されます。


3. ケース2:スコアが小さい方がよい記録の場合

次に、少し考え方が変わるパターンです。

たとえば、

  • ゴールまでにかかった時間

  • すべての敵を倒すまでの時間

  • クリアまでの手数

  • ミスの回数

このような場合は、数字が小さい方が良い記録になります。

この場合、「ハイスコア」というよりは、
ベストタイム最短記録と呼んだ方が自然です。

ただし、仕組みとしてはハイスコア更新とほとんど同じです。


最初の値に注意

スコアが小さい方がよい記録の場合、最初に変数「ハイスコア」に
とても大きな数字を入れておく必要があります。

たとえば、ハイスコアを最初に「9999」にしておきます。

なぜなら、最初の記録が必ず更新されるようにするためです。

もし最初のハイスコアが「0」だった場合、
今回のスコアが「10」や「30」でも、0より小さくないため、記録が更新されません。

そのため、最初は「9999」のような大きな数字にしておくのがポイントです。


考え方

ゲーム終了のタイミングで、

もし「スコア」<「ハイスコア」なら

  1. 「記録更新!」などと表示する

  2. 変数「ハイスコア」に、今回の「スコア」を入れる

これで、より小さい記録が出たときだけ、記録が更新されます。


4. 高い方がよいのか、小さい方がよいのかを考えよう

ハイスコアの更新で大切なのは、
そのゲームでは、数字が大きい方が良いのか、小さい方が良いのかを考えることです。

ポイントやコインの数なら、大きい方が良い記録です。
クリア時間やミスの数なら、小さい方が良い記録です。

この違いによって、使う比較の向きが変わります。

  • 高い方がよい場合:スコア > ハイスコア

  • 小さい方がよい場合:スコア < ハイスコア

この2つを使い分けるだけで、いろいろなゲームの記録更新に対応できます。


まとめ

ハイスコアの更新は、考え方がわかれば比較的シンプルなプログラムです。

今回のポイントは次の3つです。

  • 今回の記録を入れる「スコア」を用意する

  • これまでの最高記録を入れる「ハイスコア」を用意する

  • ゲーム終了時に、スコアとハイスコアを比較する

スコアが高い方がよいゲームでは、
スコアがハイスコアより大きいときに更新します。

タイムアタックのように数字が小さい方がよいゲームでは、
スコアがハイスコアより小さいときに更新します。

この仕組みを覚えておくと、スクラッチで作るゲームに「記録更新」の楽しさを追加できます。


ファイブボックスでは、スクラッチやUnityの個別指導のオンラインレッスンを行っています。

ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。

いいなと思ったら応援しよう!

ファイブボックス よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!