・時間制限を付けたゲームの作り方
・クローンと乱数を上手に活用する など
前回<入門編>3-3 タイマーとストップウォッチを作ろう!(時間制限)までに学んだ、
フルーツをとれば得点アップ(りんご:1点、バナナ:3点)ですが、
ボールに当たるとマイナス2点です。
○背景とスプライトの設定
背景には「Blue Sky」、スプライトに「Monkey」を追加して、ねこのスプライトは削除しましょう。
「Monkey」のスプライト名=「さる」、位置をX座標=0、Y座標=-125、大きさを50にしました。
位置の初期化のためのブロック(「X座標を0、Y座標を-125にする」)も忘れず配置しましょう。
落ちてくるスプライトには、「Apple」・「Bananas」・「Baseball」が登場しますが、
作るスクリプトがほぼ同じ構成になるので、ひとつだけ作って、後で複製(コピー)したほうが便利です。
なので、ここでは「Apple」だけを追加して、
スプライト名=「りんご」、位置はX座標=0、Y座標=140、大きさを70に設定しておきましょう。
ここまでできたら、さるの動きを作っていきましょう!
○さるの動きを作る
今回のゲームでは、さるは矢印キーの←と→で動かします。
とすると、<入門編>2-3ねこを動かそう!その2で作った内容がうまく使えそうですね!
ただ、今回は上下には動かないので、スクリプトは左右のみのシンプルなものになります。
上図のように、先ほどの初期化のブロックの下に繋げます。
ひとまず、旗のボタンを押してみて、矢印キーの←→でさるが動くことを確認しましょう!
x座標は10と-10ずつ変えるようにしていますが、この数字を調整すると、さるの速さを変えることができます。
完成したら、次はりんごのスクリプトを作っていきましょう。
○りんご(クローン)の動きを作る
今回のゲームでは、りんごは1秒ごとに新しいものが落ちてくる仕組みです。
何度も同じスプライトを出したいときに使えるのがクローンでしたね!
まず、旗が押されたときに、本体は隠し、
「1秒待つ」→「クローンを作る」がずっと実行されるようにしましょう!
本体のスクリプトが完成したら、次はクローンのスクリプトを作っていきます。
まず、クローンされたときに、表示して、
その後、乱数を使って、りんごのクローンをランダムな位置に移動させることを考えましょう!
りんごのクローンが出てくる高さ(Y=140)は変えずに、
横の位置だけをランダムにしたいので、
X座標だけを乱数にしていきます。
上の図を見るとわかりやすいと思いますが、
今回はX座標の乱数の範囲を-200から200にしてみましょう。
これで全体にバラバラとりんごが現れるようになります。
あとは、落ちてくるようにすれば動きは出来上がりそうです!
りんごのクローンを下方向に動かしていくためには、Y座標を少しづつ減らしていけばいいですね。
今回は、Y座標の減らし方は-7にしてみましたが、
この数値を調整すると、りんごの落ちる速さを変えることができます。
ここまで出来たら、一度旗のボタンで実行してみてください。
無事、りんごがたくさん落ちてきましたでしょうか?
このままだと下の方に溜まっていきますね。
次は、りんごの当たり判定と得点をつけていきましょう!
○当たり判定と得点表示
このゲーム内でりんごが何かに当たってイベントが発生するのは、次の二つのときがあります。
①さるにあたったとき:得点が1点増えて、りんごが消える。
②地面におちたとき :得点は変わらず、りんごが消える。
それぞれのパターンをクローンのスクリプト内に組んでいきましょう!
条件は「①もしさるに触れたなら」と、「②もし端に触れたなら」ですね。
まず、新しく「得点」という名前の変数を作り、
①と②のパターンを、下図のように、それぞれ「ずっと」ブロックの中に配置しましょう。
ここで、クローンを消すには、「このクローンを削除する」ブロックを使うようにしましょう!
もし「隠す」だけだと、見かけ上は消えていても、そのクローン自体は存在しています。
すると、
ゲーム中にたくさんのクローンが溜まってしまい、プログラムの処理に負荷がかかったり、
上限数(Scratch3.0の場合、一つのプロジェクト内で300個)をオーバーする可能性もあります。
ここまで完成したら、ふたたび旗のボタンで実行して試してみましょう。
さるを動かしてりんごを取った時に、ちゃんと得点が増えていってますでしょうか?
ここまで出来たら、りんごのスクリプトは完成です。
このりんごのスプライトを複製(コピー)して、
他のスプライト「Bananas」と「Baseball」も作っていきましょう!
○スプライトの複製(コピー)
スプライトやスクリプトを複製するには、いくつかの方法があります。
①スプライトをまるごと複製(コピー)して、コスチュームなどを変える
②スクリプトのブロックのかたまりを、まるごと別のスプライトにドラッグ&ドロップしていく
③バックパックを使う(この機能はアカウント登録済みのオンライン版のみ)
今回は、①の方法で進めたいと思います。
まず、りんごのスプライトの上で右クリックをして、「複製」を選びます。
すると、「りんご2」というコピーされたスプライトが出来上がります。
コピーができたら、それを選択した状態のまま、①コスチュームタブをクリックして、
②左下のをクリックして、「Bananas」のコスチュームを選びます。
すると、「Bananas」のコスチュームが追加されるので、
その上の「apple」のコスチュームは消してしまいましょう。
これで、りんごをコピーしてバナナのスプライトを作ることができました!
スプライト名は「バナナ」に変更しておきましょう。
おなじように、もう一つコピーを作って「Baseball」のスプライトを作れば複製は完了です。
スプライト名は「ボール」に変更しましょう。
完了したら、次に、バナナとボールの各数値(パラメータ)の設定をしていきます!
○各数値(パラメータ)の設定
各アイテムの点数や出現頻度、速さに違いがあると、ゲームが面白くなります。
・バナナは得点が高い分、なかなか出てこず、落ちる速さも早くて取りづらい
・ボールは得点がマイナスになるので、出てくる量は少なめ、ゆっくり落ちてきて邪魔になる、
というような構成にしてバランスを整えてみましょう。
パラメータを変更する箇所は上の図のようになります。
①「~秒待つ」の部分
この数値を変更すると、何秒に一度クローンが出現するかを設定できます。バナナは4秒に一度、ボールは3秒に一度に設定します。
②「Y座標を~ずつ変える」の部分
この数値を変更すると、落ちる速さが変えられます。バナナはマイナスを大きめの-10にして、ボールは小さめの-5にしました。
③「得点を~ずつ変える」の部分
アイテムを取った時の点数(スコア)の増え方です。バナナは+3点、ボールは減点なのでー2点です。
実際に実行してみて、正しく動いていることを確認してみましょう!
このままだと得点がリセットされないので、「得点」の初期化のブロックを置く必要があります。
最後に、時間制限のスクリプトと合わせて作っていきましょう!
○時間制限のスクリプトを作る
時間制限はゲーム全体に関することなので、主役のさるのスプライトで作っていくことにします。
作り方は、前回のチャプターで紹介したものと同じ内容です。
新しく「残り時間」という名前の変数を作り、
上図の②のようにスクリプトを新しくセットしましょう!
今回は、ゲームの制限時間は30秒に初期設定し、
③の得点の初期化のブロック(→「得点を0にする」)も合わせてここでセットしています。
最後に、ゲーム画面を見ると、変数が2つになったので「得点」と「残り時間」が縦に並んでいます。
落ちてくるフルーツが見えづらくなるので、
ドラッグ&ドロップで移動して見た目を整えましょう!
これで、今回のゲームは完成になります。お疲れ様でした!
実際にプログラムを実行して、遊んでみてください。
スプライトを別のイラストやパラメータにしたり、
ゲームが終わった時に背景やコスチュームを変える、「TIME UP!!」という文字を表示させる、
などの工夫しても良いかもしれません。
<入門編>に関しては今回のチャプターで最後になります。
これまで実際に作って動かしながら、スクラッチでの基本的な操作やゲーム作りが自分自身でもできるようになっているのではないでしょうか??
さらに、<応用編>やゲーム作りのアイデアなどの記事を更新中です!
よろしければ日頃見に来ていただけたら嬉しく思います。
今回もありがとうございました。