今回つくるゲーム
難易度
今回はレゴブースト(LEGO®️BOOST)とスクラッチを連携させて、的当てゲームを作っていきます。レゴブーストのムーブハブでジョイスティックを作り、傾きセンサー(チルトセンサー)を活用し方向を定めてカラーセンサーを活用した発射ボタンでボールを発射し、的の風船に当てていきます。よくテレビ番組でスポーツ選手が挑戦する的当てチャレンジゲーム風に作っています。この記事ではまずスクラッチで的当てゲームを作るところまで解説していきます。下が今回の完成形です。左右の矢印キーで大砲の向きを調整してスペースでボールを発射します。
的の風船を作る
まず、的となる風船を作っていきます。風船はスクラッチで元々用意されているコスチュームを活用していきます。右下の猫のプラスボタンからスプライトを選ぶを選択して、一覧からBalloon1を選びます。
コスチュームを準備
コスチュームを少しいじっていきます。
まずは、風船の下についてるビラビラの部分は的当てで邪魔になるので消してしまいましょう。
風船がボールに触れたら割れるというプログラムを組むので、このままだとビラビラの部分にボールが当たっても割れてしまいます。
ビラビラを消すには、矢印ツールで選択して、deleteボタンを押すだけです
3つの風船のコスチュームすべてのビラビラの部分が削除できたら、次に風船が割れた時のコスチュームを作っていきます。
下の方の猫のプラスボタンから描くを選択してコスチュームを選択します。
今回は簡単に以下のように描きました。爆発したように見せるには、中心から少し上に爆発のイラストを描くのがポイントです。
風船を流していく
次に的となる風船を画面上部に左から右に流していきます。風船のコード部分に以下のようにプログラムを書いてください。この手のゲームの基本ですが、以下の手順で考えていきます。
1.旗が押された時に自分自身は隠す
2.自分自身のクローンを量産していく(今回は1秒ごとにクローンを量産)
3.クローンされた時の動きを規定する(今回は画面左上から右上に流す)
一度、旗を押してみましょう。以下のようにブルーの風船がどんどん左から右に流れていくようになっっているはずです。
風船を出現する間隔をあける
風船が、連続して出てくるのではなく、不規則に出てくるように設計します。
不規則に出てくるためにはクローンを作るタイミングを全て指定していくというやり方もありますが、今回はリスト機能を使って、表示させるクローンと表示させないクローンを仕分けすることで風船が出てくるタイミングを調整していきます。考え方としては以下の図のようになります。
まず風船番号という変数を作成してクローンされたすべての風船に番号をつけていきます。
次に風船出現というリストを作成して、表示させる風船を指定します。
下の概念図でいうと、1〜10に番号をつけられた風船のうち、1,4,7,8,9の5個の風船だけ表示され、それ以外は表示されないようにプログラムを組んでいきます。
実際にプログラムを組んでみましょう。
先ほど作った、風船のプログラムを以下のように改造します。
小さい風船を出現させる
テレビ番組でよくある的当てチャレンジには激ムズの小さい的が出現します。今回のゲームでも、小さい風船を登場させます。これもリスト機能を使えば簡単です。さきほどと同じ考え方で、小さい風船というリストを作って、そこに含まれる番号の風船は小さい風船にすれば良いだけです。
下の概念図では8番と9番の風船だけ小さくするというように指定しています。
実際にプログラムに組み込んでいきましょう。先ほどに続けてプログラムを改造していきます。
ここまでできたら、一度緑の旗を押して、動きを確認しましょう。以下のように、大小の風船が間隔をあけて流れてくれば成功です。
今回クローンは60個作成しています。つまり風船番号は1〜60までありますので、1〜60の中で表示させる風船、小さくするする風船をリストで自分好みにしてみてください。
ステージを作る(オプション)
次に、雰囲気を作るために、的当てゲームのステージを作っていきます。
なくてもゲームとしては成立するので面倒であればこのステップは飛ばしてください。
通常、ステージを作るには、最右側のステージを選択しますが、ステージの後ろ側に風船を置きたいため、ステージ用の新しいスプライトを作成します。
以下のように赤いバーの上を風船が流れてくるようにして、左右の端には黒い幕を下ろしておきます。
大砲を作る
次に風船を割るための大砲を作っていきます。
まずは大砲の筒の部分を作ります。新しくスプライトを追加して、下の図のように大砲の筒を作ります。ここで大切なのは大砲の向きを横向きにするということです。スクラッチでは右向きが進行方向になります。このあと大砲の向きにボールを飛ばすので、デフォルトの方向をあわせておく必要があるのです。
大砲を上向きに作るとボールがどのように出てきてしまうか実際にためしてみてもよいですね。
また、中心点(真ん中の○と+が重なっているマーク)に筒の根元の部分を持ってくるのもポイントです。この後大砲を左右に動かしますが、回転の中心は中心点になりますので、特にコスチュームを回転させる場合は中心点にどこを持ってくるかよく考えるようにしましょう。
続いて大砲のコードを書いていきます。旗が押された時に、中央下部分(x:0,y:-180)に持ってきて
角度を0度に向けます。筒を右向き(90度)に作っておいて、設置する時に上向き(0度)に向けるのがポイントです。
そして右矢印が押されたら右向きに回し、左矢印が押されたら左向きに回すようにします。
そのときに、キーが押されている間だけ回すようにします。
この左右に回転させる部分を、後ほどレゴブーストのジョイスティックに置き換えていきます。
ロボットと繋げる前に一通り動きをつくってしまって、最後にロボットの動きと連動するようにプログラムを修正していくのがコツです
実際に旗を押して左右に動かしてみます。左右の矢印を押した分だけ動けば成功です。
大砲の仕上げとして、この筒の根元をを砲台で隠します。
筒とは別に砲台のスプライトを作成します。
今回作る砲台のようにプログラムとは関係のないスプライトはプレビューを見ながら位置や大きさを合わせる方が楽です。ただしそれをする場合はかならずx:0,y:0にしてから描くようにしてください。
これで砲台もセットできて大砲の完成です
ボールを発射する
ボールのスプライトを作成
先ほど作った大砲からボールを発射します。
まずはボールのスプライトを追加します。今回はスクラッチですでに用意されているボールを選びます。
コードは以下のように書いていきます。一旦スペースが押されたらボールが飛び出してくるようにします。風船の時と同様に旗が押された時に自分自身は隠し、スペースが押されたら自分自身のクローンを作るようにします。クローンが作られたら、大砲の場所に行き、大砲の向きに動いていきます。
「大砲の場所に行く」というのは中心点に行くということになります。コスチュームを描く時に中心点をどこに置くのかはとても大切なので意識するようにしましょう。
しかし、このままでは飛ばしたボールが端にひっついてしまうので、端に到達したら隠す処理を行わなければなりません。ただし、ボールの一番最初の位置が下端なので、前記の処理を行う前に少しだけ動かす必要があります。コードは以下の通りとなります
ボールが風船に当たった時の処理
ここからボールが風船に当たった時の処理を書いていきます。
風船のコードに移動して、下のようにボールに触れた時のコードを追加します。
ボールに触れたら風船のコスチュームを爆発に変えて、少し待って隠します。
一つのスクリプト(ブロックのかたまり)にコードを詰め込むのではなく、分けられるものは別のスクリプトに分けた方がコードが見やすくなります
ボールが風船に当たった時に、ボールも消すようにしましょう。ボールのコードに移動して、「端に触れた」に加えて、「Balloon1(風船)に触れた」をボールを隠す条件に加えましょう。
ボールを大砲の裏に隠す
この状態で、旗を押した時に、おそらくボールが最前面にきていて、大砲からボールが出ているように見えていないと思います。今回のようにレイヤーが多層化しているゲームを作った時には、何が前面で何が背面かを規定する必要が出てきます。今回は、
最前面:砲台
2層目:大砲(筒)
3層目:ボール
4層目:ステージ
最背面:風船
という順番です。
以下のようにそれぞれ、層を規定していきます。
4層目、最背面も必要に応じて規定してください。
これで、スクラッチの的当てゲームは完成です。
基本的な動きの解説は以上になります。次はレゴブーストでジョイスティックを作り、ジョイスティックの動きをプログラミングと連携させていきます。
今回作成したコードは以下からも確認できます。
そのほかにもレゴブーストとスクラッチを組み合わせたゲームをご紹介します。