Scratchで小さな正方形を描けたあと、「大きいものも並べたい。でも、同じブロックをまた全部つなぐの?」と迷うことはありませんか。辺の長さを入力できる定義ブロックを作れば、描く手順は一つのまま、渡す数字だけを変えて大小の正方形を描けます。
この記事では「正方形を描く(長さ)」という自分専用の命令を作ります。以下の長さや座標は、仕組みを試すための作例です。Scratchの日本語表示を前提に、文字でブロックのつながりを示します。
変えるのは「辺の長さ」、共通にするのは描く手順
正方形を描くとき、小さくても大きくても「進む、直角に曲がる」という手順は同じです。変える必要があるのは、一辺を何歩で描くかという部分です。
そこで、描く手順に名前をつけ、使うたびに長さを指定する形にします。このように、ブロックへ渡す値を「引数」と呼びます。子どもと作るときは、まず「使うときに数字を入れ替えられる穴」と考えても構いません。
Scratch公式のMy Blocks学習カードでも、同じ処理の一部だけを変えたい場面に、入力欄のある自作ブロックを使う方法が紹介されています。
| 作り方 | 大きさを変える場所 | 描く手順を直す場合 |
|---|---|---|
| 大小それぞれの処理を複製する | 複製した処理の移動距離 | それぞれの処理を確認する |
| 引数つきの定義ブロックを使う | 呼び出すブロックの入力欄 | 共通の定義を直す |
正方形を一つ描くだけなら、無理にまとめる必要はありません。「同じ形を、違う長さで何度も使いたい」という今回の目的に合わせて使いましょう。
「正方形を描く(長さ)」を作る
ペンと、描く担当のスプライトを用意する
新しい作品で、描画を担当するスプライトを一つ選びます。画面左下の拡張機能を追加するボタンから「ペン」を追加してください。ここから先のプログラムは、すべて同じスプライトに組みます。
ペンは、下ろした状態でスプライトが移動すると線を残し、上げると移動しても線を残さなくなります。この動作はScratch公式公開コードのペン拡張機能で確認できます。
数字を受け取る入力欄を追加する
- 「ブロック定義」を開き、「ブロックを作る」を選びます。
- ブロック名を「正方形を描く」にします。
- 「引数を追加」のうち「数値またはテキスト」を選び、入力名を「長さ」にします。
- 今回は「画面を再描画せずに実行する」にチェックを入れず、作成を確定します。
入力欄を追加する操作は、先ほどの公式学習カードの「Create a My Block」「My Block with Parameters」に図解されています。ブロック名や入力名はこの記事の作例なので、自分で付けてください。
作成すると、コードを組む場所に「定義 正方形を描く(長さ)」が現れます。これは、命令の中身を決めるための入口です。緑の旗につなぐブロックとは、役割が違います。
定義の下に正方形の手順をつなぐ
次のように組みます。「時計回りに90度回す」は、右回りの矢印が付いたブロックを使ってください。
定義 正方形を描く(長さ)
90度に向ける
ペンを下ろす
4回繰り返す
(長さ)歩動かす
時計回りに90度回す
ペンを上げる
「長さ」は文字として打ち込むのではなく、定義の見出しにある丸い「長さ」をドラッグして、「○歩動かす」の数値欄にはめ込みます。公式の定義ブロックの説明でも、入力用の丸いブロックを定義内へドラッグする使い方が示されています。
ここでは最初に向きをそろえるため、呼び出す前にスプライトがどちらを向いていても、右へ進む辺から描き始める設計です。
呼び出す側で数字を変え、三つ並べる
定義を作ったら、次は「いつ、どこで、どの長さで描くか」を指定します。「ブロック定義」の一覧から、作成した「正方形を描く」を取り出し、緑の旗から始まる処理につなぎます。
定義の見出しそのものを移動するのではありません。中身を決める定義と、その中身を使う呼び出しを分けるのがポイントです。自作ブロックの呼び出しと入力値の使われ方は、Raspberry Pi FoundationのScratch入門教材「My blocks」でも説明されています。
緑の旗が押されたとき ペンを上げる 全部消す ペンの太さを2にする x座標を-180、y座標を80にする 正方形を描く(40) x座標を-80、y座標を80にする 正方形を描く(70) x座標を40、y座標を80にする 正方形を描く(100)
この作例では、最初の正方形を描き終えてから次の場所へ移り、別の長さで同じ命令を使います。大きさごとに「4回繰り返す」の中身を作り直す必要はありません。
「全部消す」は緑の旗の直後に一度だけ置きます。正方形の定義の中へ入れると、次の正方形を描くたびに、先に描いたものまで消してしまうためです。
お子さまに合う学び方診断
正解・不正解を決める診断ではありません。今の様子から、取り組みやすい学び方の入口をご案内します。
入力した数字と、見える結果を照合する
| 呼び出し | 確かめたい結果 |
|---|---|
| 正方形を描く(40) | 三つの中で最も小さくなる |
| 正方形を描く(70) | 40より大きく、100より小さくなる |
| 正方形を描く(100) | 三つの中で最も大きくなる |
次に、真ん中の70だけを50へ変えてみましょう。定義には触れず、真ん中の正方形だけが小さくなれば、「使うたびに長さを渡す」仕組みを確認できます。
数字を変えても同じ大きさになるときの確認箇所
今回の仕組みでは、入力した数字が「歩動かす」まで届いているかを見ると、確認する場所を絞れます。
「歩動かす」に固定の数字が残っていないか
定義内が「40歩動かす」のままなら、呼び出す側に70や100を入れても、移動距離は40のままです。「歩動かす」の中に、丸い「長さ」が入っているか見直してください。
また、「変数」から同名の「長さ」を作る必要はありません。今回使うのは、定義を作る際に追加した入力です。入力ブロックはその定義内で使うものだと、Scratch公式ヘルプにも説明されています。
定義だけ作り、呼び出しを置き忘れていないか
「定義」の下に手順がそろっていても、緑の旗から始まる処理に「正方形を描く」がなければ、その処理からは呼び出されません。まず一つだけ呼び出しを置き、入力欄へ40を入れるところまで戻って確認しましょう。
正方形同士を結ぶ余計な線が出る場合は、引数とは別の確認が必要です。線を残さず移動する方法は、ペンを上げる・下ろすの使い分けの記事で詳しく扱っています。
作れたら「変える部分」を一つだけ選ぶ
次の制作では、辺の長さを変えるのか、置く場所を変えるのか、どちらか一つを選んでみてください。例えば窓の模様なら、同じ長さの正方形を別の座標に並べる方法があります。箱の大きさ比べなら、位置をそろえて長さを変える方法が考えられます。
最初から色や位置まで全部入力できるブロックにする必要はありません。「今回は長さだけ」という範囲なら、入力と結果を見比べやすくなります。
教室で続きを相談するなら、「大小の四角は描けた。次は窓として並べたい」のように、今できていることと次に作りたいものを伝えると具体的です。CotoMiraiでは、年齢・興味・理解度に合わせた個別指導で、プログラミングやデジタルものづくりに取り組めます。
よくある質問(FAQ)
「長さ」という変数を先に作りますか?
この作例では作りません。「ブロックを作る」画面で追加した入力を使います。定義の見出しにある丸い「長さ」を、移動距離の欄にはめ込んでください。
「4回繰り返す」があるのに、定義ブロックも必要ですか?
役割が違います。繰り返しは一つの正方形の四辺を描くために使い、定義ブロックは、その正方形を描く手順全体を違う長さで使うために用意します。
別のスプライトからも、そのまま呼び出せますか?
今回の自作ブロックを直接使えるのは、定義を作ったスプライトです。公式の学習カード「My Block vs Broadcast」でも、この範囲が説明されています。まずは描画担当を一つにして試しましょう。
大きさを変えるには、スプライトの「大きさ」を変えてもよいですか?
この作例では、正方形の一辺を「歩動かす」の距離で決めています。ペンで描く正方形を大小に描き分けるには、「正方形を描く」の入力値を変えてください。
幼児にも引数という言葉を教える必要がありますか?
言葉の暗記を今回の目標にする必要はありません。まずは40を70へ変え、形がどう変わるかを見る活動にできます。ブロックを組む作業がまだ難しければ、数字を選ぶ部分だけ参加する形も一案です。
作品の続きを、その子の興味や理解に合わせて考えたい方は、CotoMiraiの無料体験をご利用ください。
参考にした情報
関連する記事
お子さまに合う学び方診断
正解・不正解を決める診断ではありません。今の様子から、取り組みやすい学び方の入口をご案内します。