順位予想ゲームを作ろう!(ランダム関数、メッセージ)

ここまでで基本的なブロックの使い方は慣れてきたと思いますので、今回は少しゲーム性を持たせたプロジェクトを作ってみようと思います。

 

今回新しく覚えるのは「メッセージ」。Scratchではスプライトごとにスクリプトを書いており、これまで学んだブロックは基本的にはスクリプトを書いたスプライトの見た目や動きを制御するものでした。しかし、複雑なプロジェクトを作るためには、複数のスプライトの動作を連携させる必要があります。こんな時に必要になるのが「メッセージ」です。

 

※すでに何度か説明した操作やブロックについては説明を簡略化しています。わからない場合は過去の記事を御覧ください。

順位予想ゲームを作ろう!(ランダム関数、メッセージ)

今回のポイントは「メッセージ」です。

 

今まで書いてきたスクリプトは、スプライトごとに記述しており、記述したスプライトの見た目や動きに影響するものでした。しかし、ゲームを作るためには「スプライトAの動作に合わせてスプライトBを動かす」といったことが必要になってきます。例:シューティングゲームで自機(スプライトA)から弾(スプライトB)を発射する、など。

 

このような時に使用するのが「メッセージ」と呼ばれる機能になります。スプライトAのスクリプトからメッセージを送り、スプライトBでメッセージを受け取ることによって連動した動作をさせることができるようになります。

 

メッセージは、使いこなせると複雑なプロジェクトを作ることができますが、しっかりと「どのタイミングでどのメッセージを送る・受信するか」を考えて管理しないとうまくいかない、今までよりも難易度の高い機能になります。このページのプログラムを真似して作ってみたら、次は自分で考えながら使ってみてください。

 

1.プロジェクトを作成する。

まずはプロジェクトを作成しましょう。プロジェクトの作り方の詳細は以前にも解説しましたので今回は詳細は省略します。作り方を忘れてしまったという方は過去の記事を参考にしてください。

 

この記事ではプロジェクト名は「順位予想ゲームを作ろう!(ランダム関数、メッセージ)」としました。

 

2.ゴールを設定する

まずはゴールを設定しましょう。ゴールを判定するためのゴールラインもスプライトで用意することができます。スプライトリストの「新しいスプライト」から「スプライトをライブラリーから選択」をクリックし、”LINE”を追加しましょう。

 

追加した直後の初期設定では、ラインは横向きとなっているためスプライトを右クリックして「info」を選択、向きを0°または180°に変更しましょう。変更後は、ゴールをステージ右側の適当なところに動かしておきます。

 

 

3.スプライトの初期設定を行う

スプライトの初期設定を行います。初期位置や大きさなどはプロジェクトの保存前に動かしておくこともできますが、アクセスしたタイミングや同時アクセスなどで想定外の動きをすることがあるため、Scratchのプロジェクト起動時に必ず行う「”緑のフラッグ”をクリック」時に初期設定が行われるようスクリプトを組んでおくようにします。

 

まずはScratchCatのスプライトを選択し、「イベント」の「緑のフラッグがクリックされたとき」にスタート位置を左側に設定します。今回は”X座標=-200″と”Y座標=50″にしました。またスプライトが大きいため「大きさを”50″%にする」ブロックも合わせています。ブロックを組み合わせたら、一度一番上の「緑のフラッグがクリックされたとき」ブロックをダブルクリックするか、ステージ上の緑のフラッグをクリックして実行して想定したスタート位置に移動することを確認しましょう。

 

 

順位予想ということで選手のスプライトは1つではできません。スプライトを2つ追加して合計3つで競わせるようにしましょう。追加するスプライトは、同じScratchCatでも良いですし、他のスプライトを追加しても大丈夫です。

 

追加するスプライトにも同様の初期設定を行い、X座標をそれぞれ-50と-150に設定します。

 

▼犬(スプライト2つ目)

▼カニ(スプライト3つ目)

 

4.スタートボタンを用意する

ゴールを設定してスタート地点に並ばせることができたので次はスタートの合図を設定します。このスタートの合図を押すことによって全てのスプライトが一斉に走りだすことになります。

 

4.1スタートボタンを用意する

スタートボタンを用意します。本格的に作る場合は自作でスタート用の画像を用意しますが、今回は用意されているスプライト用の画像から適当に選んで代用します。今回は星(Star1)をスタートボタンとしました。

 

4.2スタートボタンの初期設定

他のスプライトと同様に緑のフラッグをクリックした時にスタートボタンの初期設定を行います。スタートボタンに関しては、Star1の追加時のサイズが小さいため”150%に大きくする”ことと”表示する”を追加します。

この”表示する”は”隠す”対になるブロックです。これだけでは意味がありませんが、今回はレースのスタート同時にスタートボタンを隠すため、対となる”表示する”を初期設定に記述します。(後ほど記述)

 

4.3スタートのスクリプトを記述する

星(Star1)をクリックしたらレースがスタートするようにします。ここで今回のポイントとなる「メッセージ」が登場します。スタートボタンは指示を送る側になりますので「イベント」パレットの「“メッセージ1″を送る」ブロックを使用します。合わせて先ほど述べた通りスタートボタンを「隠す」ブロックも追加します。

 

メッセージは好きな文字で複数用意することができます。”メッセージ1″と書かれた横の▼をクリックして「新しいメッセージ…」をクリックしましょう。

 

今回は”スタート”というメッセージにします。表示されたポップアップのメッセージ名に”スタート”と入力してOKボタンを押します。

 

スタートボタン側の設定はこれで終わりです。

 

5.走るプログラムを記述する

次にスプライトに戻ってゴールまで走るプログラムを記述していきます。走り始める条件として先ほどスタートボタンで作成したメッセージ”スタート”を使用します。

 

「イベント」にある「”スタート”を受け取ったとき」ブロックをスクリプトエリアにドラッグ&ドロップします。※”スタート”ではなく”メッセージ1″担っている場合はスクリプトエリアに移動させてから▼をクリックして”スタート”に変更します。

 

LINEまで走り続けるスクリプトを記述します。LINEに触れたら、全てのスプライトの動きを止めることによって最初の1つしかゴールしない=どのスプライトが1位になったかわかります。今までに学習したブロックの応用でできますので少し考えてみましょう。答えの一例は下記になります。

 

このスクリプトをScratchCat(Sprit1)と犬(Dog1)とカニ(Crab)の3つのスプライトに記述します。全く同じスクリプトになりますので、バックパックを使ってコピーすると早いです。バックアップの使い方はこちらを参照

 

 

完成

今回、実際に作ったプログラムをスクラッチ上で公開したものが以下になります。

中央に表示されている緑のフラッグをクリックするとゲームが開始されます。おそらく、画面左側に選手が並んでいる状態であるため、最初に緑のフラッグを押しても何も変わらないはずです。(実際は初期設定が行われています)

 

星をクリックするとレーススタート。誰かがゴールラインに触れるまで走り続け、1匹でもゴールラインに触れたらそこでレース終了。全員が走るのをやめてその場でストップします。レースが終了してもまた右上にある緑のフラッグをクリックすることによって最初からやり直すことができます。(結果も変わってきます)

 

メッセージの使い方は分かったでしょうか?「メッセージを送る」と「メッセージを受け取ったとき」のセットで使うブロックになります。いろいろと応用してみましょう。

 

おまけ(課題)

今回の競争予想ゲームはあまり良くない点がいくつかあります。今回はその良くないポイントを紹介しますので、解決方法について考えてみましょう。

 

 

▼課題1

このスクリプトでは、スプライトは横に動くだけです。こちらの記事で習ったようにコスチュームを変更して走って見えるように変更しましょう。

 

▼課題2

この競争予想ゲームでは、ScratchCat(猫)が勝つ確率が低くなって犬かカニが勝つ可能性の方が高くなっています。なぜか理由を考えてみましょう。また確率を同じようにするためにはどのようにすれば良いか考えてみましょう。

 

※答えは1つじゃありません。いろいろな解決方法があるので1つの考え方に固執せずに柔軟に考えてみましょう。