Hoicos Blog

Author: あぼかど

Scratch3.0ブロック定義の使い方

Hoicosプログラミング教室

使えると便利な定義ブロックの使い方をマスターしよう
5bded7e9ebf0c00044b7975e79d1e0b6 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

Scratchを使い始めてプログラミングに慣れてきたという脱初心者の方も多くいらっしゃるのではないでしょうか。

しかし、下の方に「ブロック定義」と言う何やら不思議なブロックがありますねぇ。

今回はこれの基本的な使い方をご紹介します。

ブロック定義とは

ブロック定義とはプログラミング用語を使って説明すると、サブルーチンプログラムのことです。

サブルーチンプログラムは慣れるまで扱いがとても難しく、引数などしっかりと使い方を覚えないとうまく動きません。

もっと簡単な言葉で説明すると、くりかえし使われるブロックの組み合わせに名前をつけて一つのブロックにまとめてしまうことをブロック定義と言います。

「ずっと」や「〜回繰り返す」を使えばいいではないかと思う方もいるかもしれませんが、ここで言う「くりかえし使われるブロックの組み合わせ」とは、プログラムのあちらこちらで同じ組み合わせがあると言う意味です。

ですから、「ずっと」や「〜回繰り返す」を使うことができないのです。

基本的な使い方

まず下のイラストのようなプログラムがあったとします。

d15d32dddf113d01a98b6049e6b4432b 2 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

上のプログラムは黄色のブロックで分岐をして、その後のブロックをみてみると緑色のブロックと黒のブロックが連続している部分が二箇所にあります。

これは「ずっと」や「〜回繰り返す」でまとめることはできないのはわかりますね。

よってここで登場するのが「ブロック定義」です。

d15d32dddf113d01a98b6049e6b4432b 4 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

緑と黒のブロックを一つの大きなオレンジのブロックに変換します。これをブロック定義と呼んでいるのです。

こうすれば元のプログラムを少ないブロック数で表すことができるようになりますね。

今回は二箇所にしか同じ組み合わせのものはありませんが、プログラムによっては十箇所も同じ組み合わせのブロックがあるかもしれません。こういう時に大活躍してくれます!

ブロック定義は使わなくてもいいものですが、使えるとプログラムを楽に作れる便利な物なのです

Scratchで使うには

Scratchのブロック定義から「ブロックを作る」をクリックしてください。

下のような画面が出てくると思います。

3197b65cb0a36b50ad4106383320907c 1024x639 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

ここで、ブロック名を打ち込んでOKをクリックしてください。

035a1f74a169fb228b9a8b5f88b95690 1024x639 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

そうするとスクリプトエリアにヘンテコなブロックが挿入されました。

試しにこのブロックを使って簡単なプログラムを作ってみましょう。

簡単なサンプルプログラム

5b6dae7b064494746cd515d74a07dbf7 1024x622 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

この例は簡単すぎてブロック定義を使うメリットが見当たりませんが、このように使います。

「スプライトが押された時」に下の「アイウエオ」を実行します。「アイウエオ」は何かというと、上で定義している「どこかの場所に行って、こんにちはと2秒言う」というプログラムです。

「緑はたが押された時」も「上矢印が押された時」も同様にプログラムが動きます。

他のサンプルプログラム

同じような使い方をした例を以前記事で紹介しました。

d1d5b074a91df500aba95d2d22c94d6d 1024x632 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

この場合は定義がとても長くブロック定義を使わないと長すぎてプログラムがとても見辛くなったため使用しました。

興味がある人はこちらからみてみて下さい。

引数の使い方

もう一度この画面をご覧ください。

3197b65cb0a36b50ad4106383320907c 1024x639 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

「引数」と言う文字が下にあることにお気づきでしょうか。

「いんすう」と読んだ方、残念間違いで〜す^^

これは「ひきすう」と読みます。引き渡しをする数という意味でブロック定義の中で作られたプログラムとメインのプログラムの橋渡しをする大切な数になります。

この「引数」をマスターできるとプログラマーとしても少しかっこいいですよ!

引数の追加方法

まず最初に「引数を追加」を押して下のように2つ作って下さい。

8486e7e31855634db087e292593dca4e 1024x800 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

OKを押すと下のようにブロックが出現しますね。

31396415341cf6c162a656af9f788660 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

定義のブロックの「A」「B」の楕円をドラッグすると上の写真の右下のように「A」「B」を取り出すことができます。

この二つは変数とほぼ同じ扱いをすることができ、基本的にブロック定義の中でしか使わないことに注意して下さい。

では、サンプルプログラムをご覧ください。

サンプルプログラム

451d00ec28a3ca9fb79d180eda417e1a - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

このプログラムを作動させて、上矢印キーを何回か押すと下のように動きます。

解説をします。

下のイラストを見れば一発でわかるのでご覧ください。

25d8e63ed84b52be2662b69032d08d0f - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

「A」「B」はブロック定義の中で使用する物なので、「A」「B」にメインのプログラムから変数を引き渡さないといけません

引き渡している部分が下のブロックです。

70385a1f63c7b62d30ac248c0f7994c3 - Scratch3.0ブロック定義の使い方-hoicos%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0%e6%95%99%e5%ae%a4-自由研究, Scratch, 小学生

これが「A」と「B」に「x座標」と「y座標」を引き渡しているということになります。

最後に

ブロック定義は難しかったですか?

同じ組み合わせのブロックたちを一つにまとめると考えると理解は容易いかと思います。

しかし、引数というモンスターもいるので要注意です。引数の使い方を間違えると全くプログラムが動かなくなってしまうので取り扱いには気をつけて下さい。

またいつか引数を使った面白い作品を紹介します!

この記事がいいと思ったら↓のシェアボタンから

Comments

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。