イベント駆動 | Scrachとロボットプログラミング

2023年12月31日

スクラッチ(Scratch)でのプログラミングではイベント駆動型といって、何か事象が起きたときにそのことに対して処理をさせるといったプログラミングが可能です。例えば、スクラッチ(Scratch)とロボティクス:条件分岐を使ったタスク実行」での処理は、「~までまつ」ということである特定の事象を待っている(キーボードの何かのキーが押されるまでまつ)プログラムであるため、イベント駆動型とは呼びずらいものです。

いったいいつ何が起きるかはわからないけれど、起きたときにその事象に対しての処理を行うプログラムをここでは実験してみます。

イベント駆動型プログラムのメリット

イベント駆動型プログラムは、特定の事象が起きた時に処理を行う形式のプログラミングです。これにより、何が起きるかわからない状況でも柔軟に反応できます。例えば、スタートフラグがクリックされた時に複数の処理を同時に開始することができます。この形式は、イベントに応じて動的にプログラムを変化させることができるため、インタラクティブなロボット制御に適しています。

対照的に、イベント駆動型でないプログラムは、一連の手順に沿って順序立てて処理を行います。これは、特定のタスクを一定の順序で実行する場合に適しており、プログラムの流れが予測しやすいというメリットがあります。

イベント駆動型のメリットは、予測不可能なイベントに柔軟に対応できることですが、プログラムの流れが複雑になりがちで、デバッグが難しくなることがデメリットです。一方、イベント駆動型でないプログラムは、流れが直感的で理解しやすいですが、予期しないイベントに対応するためには追加の処理が必要になる場合があります。

スクラッチ(Scratch)でのイベント

イベント駆動型のプログラミングを行う際に、スクラッチではコードーイベントの中にあるコマンドブロックを使用します。

スクラッチ(Scratch)にはこれだけのコマンドが用意されていて、それぞれの事象によって動きを作ることができます。

ここでは少し面白い3つのコマンドをご紹介します。

ステージの左上にあるスタートフラグがクリックされたことを検知するコマンドです。
たとえば、スタートボタンをクリックしたときに2つ以上の処理を同時に実行したい場合などに使います。
例えば、下記のプログラムはスタートフラグをクリックした瞬間に、ロボットの胸のLEDを1秒点滅させる動きと、ステージの中をどんどん移動するスプライトの動きを同時に始めることができます。
これは、スタートフラグがクリックされたという事象をスクラッチ自体が教えてくれたことによって2つの処理が同時に動き出しました。

これは、キーボードの指定したキーが押されたときに反応するコマンドブロックです。
以前作った スクラッチ(Scratch)とロボティクス:条件分岐を使ったタスク実行」 はキーボードが押されることを待ちましたが、このコマンドを使うことで待つことなく処理できるようになります。

これはスプライトをマウスでクリックされたときに何かをさせたい場合に使うイベントです。

ここでは簡単に、スプライトを90度回転させロボットの足を左右上げる動きをさせてみます。