【Minecraftプログラミング】は、「Microsoft MakeCode for Minecraft」を利用してマインクラフトの世界でプログラミングを学ぶ連載です。毎週月~金曜日更新。

Minecraftプログラミング レッスン39関数

関数で動きをまとめるには

役割ごとにブロックをまとめる

レッスン38までに作ったプログラムが非常に長くなり、画面をスクロールしないと全体が見えないほどになってきました。

このような場合一定の処理を「関数」としてまとめると、全体の流れが分かりやすくなります。農地を作る、水源を作るといった役割ごとにブロックをまとめて、全体を整理してみましょう。

1関数を作る

HINT 関数とは

関数は処理をまとめて入れる箱のようなものです。ある処理を繰り返し実行したいときは、まとめて関数に置き換えるとプログラムの動きを把握しやすくなります。なお、関数は単体では動作しません。このレッスンで作成した関数は、次のレッスンで呼び出して使えるようにします。

HINT 分かりやすい名前を付けよう

変数と同様に関数にも分かりやすい名前を付けましょう。この章ではすべて「do」にプログラムの内容を英訳した名前を付けますが、日本語で名前を付けても構いません。ただし、長い名前を付けると関数を呼び出すためのブロックが使いにくくなるので注意してください。

2関数のブロックを移動する

HINT ほかのブロックには接続できない

[関数[ ]]のブロックは、ほかのブロックに接続できません。必ず中にほかのブロックを接続し、処理をまとめる役割であることに注意しましょう。

3ほかの動作の関数も作る

HINT ブロックを複製してもいい

関数をいくつも作りたいときに、ブロックパレットから選んで作るのは手間がかかります。関数のブロックを右クリックして複製すると、元のブロックに「〜2」などの数字が付いたブロックを作れます。このブロックの名前を入力し直して使うと便利です。

4耕す動作を関数にする

HINT 下からはずして関数にしていく

レッスン9のテクニックで紹介した通り、プログラミングエリアで接続したブロックをクリックすると、その下に接続したブロックがすべて選択されます。このため、長くなったプログラムを関数で整理したいときは、下の処理から順に接続を解除して[関数[ ]]ブロックにまとめていきます。

間違った場合は?


関数としてまとめたブロックの内容が間違っていたり、大切な処理が抜けていたりするとプログラムが正しく動きません。関数に処理をまとめるときは、接続するブロックの範囲と数などをよく確認してください。もし間違った場合は、はずしたブロックを元の処理に接続し直してから、内容を確認してやり直しましょう。

5エージェントの移動を関数にする

HINT 作った関数は少し離して配置する

プログラムを分解して関数にするときは、プログラミングエリアがぎゅうぎゅうになりがちです。プログラミングエリアを右クリックし、[プログラムを整形する]を実行するなどしてブロックが重ならないようにしましょう。また、完成した関数を画面の右側に移動しておくと、続けて関数を作るときに作業がしやすくなります。

HINT 関数に含める範囲を確認しよう

手順5ではエージェントが水源から移動して、所定の位置に着くまでを[doMove]の関数にしています。エージェントはこの動作を使って耕す範囲を増やすので、非常に重要な処理となります。関数にまとめる範囲を確認して、処理が正確に行われるようにしましょう。

6水源を作る動作を関数にする

HINT 一度だけ実行する処理も関数にしよう

水源を作る動作や農地の元を作る動作は、この章のプログラムの中では最初の1回だけ実行されます。関数にまとめなくても、プログラムの動作には支障がありません。ただし、ほかの処理と同じようにまとめておくとプログラム全体の流れが分かりやすくなります。また、後から農地の大きさを変更するようなときでも、メインの処理はそのままにしておき、関数の中だけ修正すればいいので手直しがしやすくなります。

HINT 縮小表示で全体を確認しよう

このレッスンのようにプログラムに大きな変更を加えたときは、全体を表示して内容を確認しましょう。[縮小表示]ボタンをクリックすると、プログラミングエリアのブロックが小さくなるので、何回かクリックして全体を確認しましょう。表示を元に戻すときは、[拡大表示]ボタンを同じ回数クリックします。

7農地を作る動作を関数にする

HINT ほかのプログラムに使ってもいい

ピラミッドや養鶏場を作ったプログラムも関数を使ってコンパクトにまとめられます。関数の使い方をマスターしたら、今までに作ったプログラムも簡潔にできるか試してみましょう。

HINT 関数の内容を確認しておこう

手順7までが終わったら、関数でまとめた内容がすべて正しいものになっているか、各手順の最後の操作を見て確認しましょう。ブロックの脱落などがあった場合は、前後の関数に余分なブロックが含まれていないか確認し、正しい形に修正しましょう。