スクラッチプログラミング

8-2 大きさが変わるヒトデ

ボールのボタンのクリックで、サイズが大きくなったり小さくなるヒトデのプログラムを作成しましょう。
ボタンのクリックイベントを使ってメッセージを送信し、ヒトデ側でそれを受信します。ボタン側で「ちぢむ」メッセージを送信するとヒトデが小さくなり、「ふくらむ」メッセージを送信すると大きくなるようにします。

ステップ1

  1. スクラッチの画面で新しいプロジェクトを作成し、プロジェクト名を「大きさが変わるヒトデ」にします。
  2. ネコのスプライトを削除し、Starfishスプライトをプロジェクトに読み込みます。
  3. Ballスプライトを2つ追加します(複製してもOK)。コスチュームを変えて区別します。下図では、左のボールを黄、右のボールを緑にしています。
  4. [スプライトリスト]でBall2スプライトを選択し、Ball2スプライトの[コスチューム]タブをクリックして、上から4つめのBall-dをクリックします。すると、ステージ上のボールの色が緑に変わります。

ステップ2

右の緑のボールをクリックしたら、メッセージを送信するようにします。

  1. [スプライトリスト]で緑のボールのスプライト(Ball2)をクリックして、このスプライトのコードエリアを開きます。
  2. [イベント]-[このスプライトが押されたとき]をドラッグ&ドロップします。
  3. [イベント]-[(メッセージ1)を送る]をドラッグして吸着させます。このブロックは[イベント]のグループにありますが、上にへこみ、下に出っ張りがあり、スクリプトの中に挿入できる形をしています。
  4. (メッセージ1)の下向き矢印はクリックによって下にメニューが開くことを示しています。これをクリックし[新しいメッセージ]を選択します。
  5. [新しいメッセージ]パネルが表示されるので、テキストボックスに「ちぢむ」と入力して[OK]をクリックします。すると(メッセージ1)の部分が(ちぢむ)に変わります。
  6. 緑のボールをクリックします。しかし何も起こりません。緑のボールからはステージとステージにあるすべてのスプライトに「ちぢむ」というメッセージが一斉送信されますが、ステージやスプライト側でそれを受け取るコードブロックをまだ設定していないので、何も起こりません。

  7. これまでのように[緑の旗]をクリックしていない点に注意してください。これまではほとんどの場合で、[緑の旗]のクリックをきっかけにして([緑の旗]のクリックイベントをトリガーにして)プログラムをスタートさせてきましたが、プログラムはほかのイベントでもスタートできます。


ステップ3

では、ヒトデのスプライトで「ちぢむ」メッセージを受け取るようにしていきましょう。

  1. [スプライトリスト]でヒトデのスプライト(Starfish)をクリックして、このスプライトのコードエリアを開きます。
  2. [イベント]-[(ちぢむ)を受け取ったとき]をドラッグ&ドロップします。このブロックは左上が丸い山型をしている点に注目してください。
  3. このイベントブロックを設定することで、ヒトデのスプライトは「ちぢむ」メッセージを受け取ることができるようになります。

  4. 大きさを10ずつ小さくします。そのためには[見た目]-[大きさを(10)ずつ変える]をドラッグ&ドロップし、10を-10に変更します。
  5. [大きさを(10)ずつ変える]ブロックは、1回の実行で、今のスプライトのサイズを規準に10%大きくします。ここでは-10を指定しているので、10%小さくなります。

  6. 緑のボールをクリックします。ヒトデが小さくなります。再度クリックすると、さらに小さくなります。
  7. ここではこれまでのように[緑の旗]ボタンをクリックしていないことに注意してください。そもそもこのプログラムでは、[緑の旗が押されたとき]イベントブロックを使っていません。

ステップ4

黄色のボールのクリックで、ヒトデを10%ずつ大きくしましょう。スプライトに設定したスクリプトはドラッグ&ドロップするだけで別のスプライトにコピーできます。

  1. [スプライトリスト]でコピー元の緑のスプライトをクリックし、コードエリアを開きます。
  2. [このスプライトが押されたとき]で始まるスクリプトをドラッグし、コピー先になる[スプライトリスト]の黄色のボールにドロップします。
  3. ドラッグして近づけると、コピー先にしたいスプライトが枠ごとゆらゆらするので、そのタイミングでドロップします。

  4. [スプライトリスト]の黄色のスプライトをクリックし、[コード]タブを開いてコピーされていることを確認します。
  5. 黄色のスプライトのコードエリアで、[(ちぢむ)を送る]の下向き矢印をクリックし、[新しいメッセージ]を選択します。今度は「ふくらむ」と入力して[OK]をクリックします。これで黄色のボタンのクリックで「ふくらむ」というメッセージがこのプロジェクトのステージとすべてのスプライトに一斉送信されます。

  6. この一斉送信のことはブロードキャストと呼ばれます。1つのものから不特定多数に一斉に情報を届ける、といったイメージです。


ステップ5

「ふくらむ」メッセージをヒトデで受け取るようにコードブロックを追加します。

  1. ヒトデのスプライトのコードエリアで、[(ちぢむ)を受け取ったとき]イベントブロックを右クリックして、表示されるコンテキストメニューから[複製]を選んでスクリプトをコピーします。
  2. コピーした[(ちぢむ)を受け取ったとき]の下向き矢印をクリックします。するとメッセージ名のリストに「ふくらむ」が追加されているので、これを選びます。
  3. このメッセージを受け取ったときはヒトデを10%ずつ大きくしたいので、-10を10に変更します。
  4. 黄色のボタンをクリックします。今度はヒトデが大きくなります。

ここでのメッセージの作成、ブロードキャスト、メッセージの受信は非常に重要です。下図を見て各スプライトに設定したスクリプトをなぞってみてください。


このプログラムでは、メッセージ名に「ちぢむ」や「ふくらむ」といった日本語を使っていますが、他のプログラミング言語では日本語が使えない場合が多いので、普段は小文字のアルファベットを使うようにします。


ステップ6

本当に1つのメッセージが他のスプライトやステージに一斉送信(ブロードキャスト)されているのか、確かめておきましょう、。

  1. カニのスプライト(Crab)を追加します。実際には好きなもので構いません
  2. カニのスプライトにヒトデのスクリプトをコピーします(スクリプトを[スプライトリスト]のカニにドラッグ&ドロップします)
  3. 2つのボールをクリックします。すると、カニはヒトデと同じように大きなったり小さくなったりします。
  4. カニのスプライトのコードエリアを表示し、2つあるブロックの10を-10に、-10を10に変更します。これにより、ヒトデとカニの拡大と縮小が逆になります。これはつまり、「ちぢむ」や「ふくらむ」といった日本語の意味はまったく関係していない、ということです。
  5. ステージの背景にUnderwater1やDesertを追加し、「ちぢむ」と「ふくらむ」メッセージの受信で、背景が変化するようにします。

  6. すると、ボタンのクリックで、背景も変化するようになります。

このプログラムは次のリンクからダウンロードできます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です