ブロック定義
スクリプトがどんどん長くなって、どこに何が書いてあるか分からなくなったり、「あれ、この処理さっきも書いたな…」と思ったりしたことはありませんか?
今回は、そんな悩みを解決してくれる、とっても便利な「ブロック定義」の使い方を学びます。
ブロック定義とは
ブロック定義とは、一連の処理をまとめて1つのブロックにすることです。直接実行するスクリプトとは別に作っておき、スクリプトからブロックを呼び出して使います。
ブロックの作り方


定義ブロックを作ると、ブロックパレットとスクリプトエリアに次のようなブロックが表示されます。

これだけではブロックの動きを設定していないので、次に動きを設定して使えるようにします。
処理をまとめる
定義ブロックにブロックを追加して、どのように動くかを設定します。
定義ブロック「動き」に10歩動かし1秒まつを10回繰り返し、x,y座標を0にするスクリプトを追加します。

「旗が押されたとき」ブロックに定義ブロック「動き」を呼び出すブロックを追加します。

このスクリプトは次のように動いています。

引数とは
ブロック定義では引数(ひきすう)という、処理の材料となる値を指定することができます。引数のない定義ブロックでは常に一定の処理しか行えません。しかし、引数を受け取れるようにすることで1つの定義ブロックでいろいろな処理をさせることができます。

引数つきのブロックの作り方
定義ブロック「動き」に数字やテキストを受け取れる引数を追加します。




このスクリプトは次のように動いています。

定義ブロック「動き」を呼び出すブロックの引数の値を「20」に変更して動きを確認してみましょう。

定義ブロックの注意点
定義ブロックはスプライトや背景ごとに設定します。そのため、他のスプライトから直接定義ブロックを呼び出すことはできません。
どうしても他のスプライトから定義ブロックを呼び出したいときはメッセージ機能を使用します。
足し算引き算
1番目と2番目の数を入力します。次に足し算をするか引き算をするかを聞いて計算をするプログラムを作成します。
変数「数1」「数2」「数3」を作成します。

定義ブロック「足し算」「引き算」(引数なし)を作成します。



球避けゲーム
上から落ちてくる球を十字キーの←→を押して宇宙船を左右に動かしながら避けるプログラムを作成します。
スプライトライブラリーから「Rocketship」と「Ball」を追加します。最初からあるネコは削除してください。


背景ライブラリーから「Stars」を追加して設定します。

変数「得点」を作成します。

スプライト「Ball」に定義ブロック「生成」と「落下」(どちらも数値またはテキストを受け取れる引数あり)を作成します。





