前回は「クラウド変数」について学びました。今回はその応用として、クラウド変数を使ったレースゲームを作っていきます!

ゲームの内容はシンプル。

車を動かしてコースを走り、3周のタイムが速かったらクラウド変数に記録される仕組みです。

結論まとめ
  • コースは「外側のトラック」を描いたあと、コピーして内側をくり抜くと作りやすい
  • 車は「マウスポインターの方へ向けて進む」で操作できる
  • ズル防止に「中間地点を通ったか」をフラグ変数で管理する
  • タイム計測はScratch標準のタイマーを使う
  • クラウド変数は「記録が更新されたときだけ上書き」にすると“最速記録”っぽくなる

コース(背景)を作る

まず背景(ステージ)を作ります。周りは緑にして、目に優しい雰囲気に。
この時点で「ゲームっぽさ」が出ます。

トラックを描いて、形を“うねうね”させる

トラック部分を描いたら、変形ツールでコースを曲げます。
丸(制御点)は増やせるので、増やすほど難易度が上がります。
(難しすぎる場合は、丸を少なめにすると遊びやすいです)

コピーして内側を作る

コース作りのコツはここ。
作ったトラックをコピーして少し小さくし、内側を背景色(緑)に塗ると、一気に「道路っぽいトラック」になります。

スプライト準備:車とラインを追加

車スプライトを追加

レースなので、車スプライトを追加します。

スタート/ゴールと中間地点ラインを描く

ここを忘れがちなので注意。

  • スタート&ゴール線
  • 中間地点の線(チェックポイント)

後で「ズル防止」に使うので、ここは必ず入れます。

車をマウスポインターで動かす

まず初期位置に戻す

旗が押された時に、車をスタート位置へ。
X座標・Y座標を指定します。

マウスポインターへ向けて進む

  • ずっと
    • マウスポインターの方へ向ける
    • 10歩動かす

これで「マウスで誘導するレースゲーム」になります。

コースアウト防止

コース外(草の色)に触れたら、
「10歩動かす」の逆(-10歩)をしてプラマイ0で戻す
これで外に出にくくなります。

向き・ひっくり返り対策

  • 初期の向きを -90° にする
  • 車がひっくり返る場合は、コスチューム側で反転して修正

変数で“ズル防止”を作る

ここがこのゲームの肝です。
ただ周回数を数えるだけだと、スタート線を行ったり来たりしてズルできちゃいます。

フラグ変数を作る

「フラグ」という変数を作ります。
フラグは「条件を満たしたかどうか」のスイッチ役。

  • スタート時:フラグ = 0

中間地点を通ったらフラグを1に

  • もし(中間地点の色)に触れたら
    • フラグ = 1

※色判定は必ずスポイトで取ります。色が少しでも違うと判定が通りません

週(周回数)とクラウド変数タイムを作る

追加で変数を作ります。

  • 周(ローカル変数)
  • タイム(クラウド変数)

スタート線+フラグ1で周回カウント

  • もし(スタート/ゴール線の色)に触れている かつ(フラグ = 1)なら
    • 周を +1
    • フラグを 0 に戻す(次の周回のため)

これで「中間地点を通ってからじゃないと周回に数えない」仕組みになります。


3周したらタイムを記録

Scratch標準の「タイマー」を使う

  • もし(周が3になったら)
    • タイム = タイマー
    • すべてを止める

スタート時にタイマーをリセットしておけば、正確に測れます。

最速のときだけクラウド変数を更新

このままだと、遅い記録でも上書きされちゃいます。
そこで「記録更新のときだけ上書き」にします。

条件:クラウド変数タイム > 今回のタイマー

  • もし(クラウドのタイム が タイマーより大きい)なら
    • タイム = タイマー(上書き)

最後の「すべてを止める」は、更新してもしなくても止めたいので、もしの外に出すのがコツ!

仕上げに表示調整&初期値

  • 周をリセット(開始時に0)
  • 変数の表示位置を見やすく
  • クラウド変数タイムが最初0だと更新できないので、最初は大きい数を入れておくとスムーズ

まとめ

クラウド変数を使うと、Scratchでも「オンラインっぽい遊び」ができます。
今回のレースゲームは、

  • コースを背景で作る
  • 車をマウスで動かす
  • 中間地点フラグでズル防止
  • タイマーで計測
  • 最速だけクラウド保存

という流れで、かなりゲームっぽい完成形になります。

「こういったゲームを作ってみたい!」という方はプログラメイクの体験会へ!

基本から応用まで、個別指導できめ細かい指導のもとプログラミングを学べます。