更新日:、 作成日:

スクラッチ 複数の処理を同時に実行する

はじめに

Scratch (スクラッチ) 3 の複数の処理を同時に実行する方法を紹介します。

イベントやメッセージを受け取ったときの処理は同時に実行されます。

ずっとループする処理をしながら他の処理ができます。

メッセージの使い方は「メッセージを使って他のスプライトを操作する」をご覧ください。

複数の処理を同時に実行する

when-recive-message

メッセージを受け取ったときや、イベントが発生したときの処理は同時に実行されます。同時に実行したい処理の数だけ メッセージを受け取ったとき ブロックを作成します。

正確には完全な同時ではありませんが、複数の処理が動いているように見えます。ループしながら別の処理ができます。

完成例

横に 10 回移動するのと、縦に 10 回移動するのを同時に実行する例を紹介します。

1

2 3

4

簡単に説明すると、メッセージを送信します。同時に処理をしたい数だけ メッセージを受け取ったとき ブロックを作成します。

複数の処理を実行する

横に移動するのと、縦に移動するのを同時に実行します。

複数の処理を開始するためのメッセージを送信します。ここでは「複数処理」にします。

1

「複数処理」メッセージを受け取ったときに、横に移動します。

2

もう一つ「複数処理」メッセージを受け取ったときに、縦に移動します。

3

このように同時に処理したい数だけ [メッセージを受け取ったとき] ブロックを作成します。

イベントを同時に実行する

イベントでも同時に処理を実行できます。同じイベントを同時に処理したい数だけ作成します。

どれかのキーを入力したときに、横と縦に移動します。

5

同時に実行するとは

複数の処理を同時に実行すると、具体的にどのような順番で処理されるのかを解説します。

  • 1. 最初に作成した メッセージを受け取ったとき ブロックの処理をすべて行います
  • 2. 次に作成した メッセージを受け取ったとき ブロックの処理をすべて行います

次のコードなら、x座標を 30 増やした後に y座標を 30 増やします。

6

このように作成した メッセージを受け取ったとき ブロックの順番に処理を行います。

ただし、次の時は処理の途中で、次の メッセージを受け取ったとき ブロックの処理を行います。

  • ループしたとき
  • 処理が終わるまで待つようなブロックを実行したとき

次のコードなら、x座標を 5 増やした後に y座標を 10 増やします。

7

次のコードなら、「1」と言った次に「2」と言います。1 秒後に「3」と言った次に「4」と言います。

8

待つ処理が終わっていないときは飛ばされます。「1」と言った次に「2」と言います。1 秒後に「1」の処理が終わっていないので飛ばして「4」と言います。1 秒後に「3」と言います。

9

このようにループするときや待つようなブロックを実行したときに、次の メッセージを受け取ったとき ブロックの処理を行います。