先にルールを書く
今回は「左右キーでプレイヤーを動かし、落ちてくる星を取る。10秒後に得点を表示する」ゲームを作ります。完成条件を先に書くと、作りながら目的を見失いません。
使うもの
- プレイヤースプライト
- 星スプライト
- 得点と残り時間の変数
- タイマー、もし、ずっと、メッセージ
この章では得点と残り時間を使います。変数の作成方法は次の変数とリストの章で詳しく説明します。先に「変数を作る」で「得点」と「残り時間」をすべてのスプライト用として作っておきましょう。
プレイヤーを動かす
プレイヤーのスクリプトに次を作ります。x座標を変えると左右へ動きます。
player のスクリプトSCRATCH BLOCKS
[緑の旗が押されたとき]
[x座標を 0 にする]
[y座標を -140 にする]
[ずっと]
[もし 右向き矢印キーが押された なら]
[x座標を 6 ずつ変える]
[もし 左向き矢印キーが押された なら]
[x座標を -6 ずつ変える]実行結果OUTPUT
左右キーを押している間、プレイヤーが左右に動きます。端から出るとき「もし x座標 > 220 なら x座標を220にする」のように上限を決めると、画面外へ消えません。
星を落として得点にする
星は上から下へ動かし、画面下まで来たら上へ戻します。プレイヤーに触れた場合は得点を増やしてから、次の場所へ移動します。
star のスクリプトSCRATCH BLOCKS
[緑の旗が押されたとき]
[得点を 0 にする]
[ずっと]
[x座標を -220 から 220 までの乱数にする]
[y座標を 170 にする]
[y座標 < -160 まで繰り返す]
[y座標を -5 ずつ変える]
[もし player に触れた なら]
[得点を 1 ずつ変える]
[y座標を -170 にする]
実行結果OUTPUT
星が画面の左右どちらにも落ちてきます。
星を取ると得点が1増え、星は次の位置から落ち始めます。
星が画面外へ出ても、外側の「ずっと」が次の星を出します。星を取ったときに y座標を -170 にすると、内側の「~まで繰り返す」の条件が成立します。ここでスクリプト全体を止めるブロックを入れると、外側の「ずっと」まで止まってしまうため、2個目以降の星が出なくなります。
制限時間を付ける
「タイマー」ブロックを使う方法と、「残り時間」変数を1秒ごとに減らす方法があります。初心者には変数の値を画面で見られる後者が分かりやすいでしょう。
時間管理SCRATCH BLOCKS
[緑の旗が押されたとき]
[残り時間を 10 にする]
[ずっと]
[1 秒待つ]
[残り時間を -1 ずつ変える]
[もし 残り時間 = 0 なら]
[ゲーム終了 を送る]実行結果OUTPUT
残り時間が10、9、8…と1秒ごとに減ります。
0になったとき、「ゲーム終了」を受け取るスクリプトが動きます。改造課題
完成したら、星を取ると効果音を鳴らす、星を2種類にする、得点でレベルを上げる、ハイスコアを保存する、の順に一つずつ追加します。
改造のコツ変更する前に予想を書き、変更後にゲームの難しさや面白さがどう変わったかを記録しましょう。これは「ゲームを改造しながら学ぶ」ための基本的な練習です。