ブロック定義とは
ブロック定義とは、スクラッチのブロックを組み合わせて、自分で新しいブロックを作る機能です。
ブロック定義を使ってコードをまとめることで、プログラムが見やすくなります。
次の処理は積極的にブロック定義にしていきましょう。
- 初期化(スタート位置の設定など)
- 名前を付けられる動きのかたまり
- 似たような動き
- 繰り返し出てくる動き
ブロック定義の使い方と合わせて1つずつ見ていきましょう。
ブロック定義の使い方
例として、正三角形を描くプロジェクトを考えてみましょう。
かけっこの「位置について」「よーい、ドン!」と同じように、「スタート位置につく」「正三角形を描く」という動きのかたまりに分けることでプログラムの流れが分かりやすくなります。
定義したブロックはそのスプライト限定なので、他のスプライトでも同じ動きをさせたい場合はバックパックを使いましょう。
ブロックをつくる
【ブロック定義】カテゴリの「ブロックを作る」をクリックします。
ブロック名に「スタート位置につく」と入力し、「OK」をクリックします。
定義「スタート位置につく」ブロックの下に、初期化するためのブロックをつなげます。
同じように、「正三角形を描く」という定義ブロックを作り、ブロックをつなげます。
定義したブロックは他のブロックと同じように使います。「🏁が押されたとき」ブロックにつなげましょう。
このように、ブロック定義を使うことで処理の流れが見やすく、かつ、分かりやすくなります。
では次に、他の正多角形を作る場合にどのようにブロック定義を作るのか見ていきましょう。
引数の使い方
「〇歩動かす」の「〇」が引数です。
「〇」を10にすれば10歩、20にすれば20歩進みますが、歩数ごとに定義するのは大変。引数を使って異なる動きを1つのブロックで定義すると、分かりやすく、使いやすくなります。
正四角形や正五角形といった正多角形を作る場合も、次のように、引数を使って「正〇角形を描く」というブロック定義を作ると良いです。
【ブロック定義】カテゴリの「ブロックを作る」をクリックします。
ブロックに「正」と入力します。
「引数を追加」をクリックし、引数の名前に、「すうじ」と入力します。
「text」をクリックし、ラベルに「角形を描く」と入力したら、「OK」をクリックします。
定義「正〇角形を描く」ブロックに正三角形を描くコードをつなげてください。
このままでは、引数に何を指定しても正三角形しか描けませんね。
引数に合わせて正多角形を描くために、正三角形、正四角形、正五角形のコードから、違う処理を見つけます。
違う処理が見つかったら、そのコードを引数を使った処理に置き換えます。
定義したブロックの引数に数字を指定して、使ってみましょう。
引数を使うことで、似たような動きを1つの定義にまとめることができました。
次は、「『繰り返し出てくる動き』をブロック定義にまとめることで、コードがシンプルになる」という例を見ていきます。
ブロック定義の再利用で幾何学模様をつくる
あなたは、次の幾何学模様を描くためにどのようにコードを書きますか?
どの図も正多角形を繰り返し描いているだけなので、先ほど作った正多角形のブロック定義を使います。
正多角形を描くために、定義「正〇角形を描く」ブロックを次のように変更しています。長さ、角度はいろいろな数字に対応できるように変数に変更します。待ち時間も削除しました。
ブロック定義を使わない場合、次の作業が必要になり大変です!
- 何度も同じコードを書く(コピーする)
- 少しの変更のために、たくさんのブロックを変更する
ブロック定義で再描画せずに実行すると処理速度が速くなる
再描画とは、表示中の画面・画像に変更が加えられたときに、再度その画面・画像を描画する機能のことです。
描画する分だけ処理が多くなるため、全体の処理が多くなります。結果として、プログラムを処理する時間が長くなります。
ブロック定義では、「画面を再描画をせずに実行する」にチェックをすると再描画なしで処理が行われ、時間を短縮することができます。
正二十角形の幾何学模様を書くプログラムで比較すると、「画面を再描画をせずに実行する」にチェックしたプログラムはすぐに結果が表示されるのに対して、「画面を再描画をせずに実行する」にチェックしていないプログラムは、模様が描かれる様子を見ることができますね。
結果が必要な場合は「画面を再描画をせずに実行する」にチェックし、過程が必要な場合は「画面を再描画をせずに実行する」にチェックしない、と目的に合わせてうまく使い分けてください。
まとめ
Scratchの開発では、「ブロック定義」を使うことで見やすくなり、開発効率も上がります。
コードを修正する場合も、定義内の1か所だけで良いので修正漏れを防げます。
頭の中を整理することもできますので、ぜひ活用してください。