【Minecraftプログラミング】は、「Microsoft MakeCode for Minecraft」を利用してマインクラフトの世界でプログラミングを学ぶ連載です。毎週月~金曜日更新。
関数
関数で動きをまとめるには
役割ごとにブロックをまとめる
レッスン38までに作ったプログラムが非常に長くなり、画面をスクロールしないと全体が見えないほどになってきました。
このような場合一定の処理を「関数」としてまとめると、全体の流れが分かりやすくなります。農地を作る、水源を作るといった役割ごとにブロックをまとめて、全体を整理してみましょう。
1関数を作る
HINT 関数とは
関数は処理をまとめて入れる箱のようなものです。ある処理を繰り返し実行したいときは、まとめて関数に置き換えるとプログラムの動きを把握しやすくなります。なお、関数は単体では動作しません。このレッスンで作成した関数は、次のレッスンで呼び出して使えるようにします。
HINT 分かりやすい名前を付けよう
変数と同様に関数にも分かりやすい名前を付けましょう。この章ではすべて「do」にプログラムの内容を英訳した名前を付けますが、日本語で名前を付けても構いません。ただし、長い名前を付けると関数を呼び出すためのブロックが使いにくくなるので注意してください。
2関数のブロックを移動する
HINT ほかのブロックには接続できない
[関数[ ]]のブロックは、ほかのブロックに接続できません。必ず中にほかのブロックを接続し、処理をまとめる役割であることに注意しましょう。
3ほかの動作の関数も作る
HINT ブロックを複製してもいい
4耕す動作を関数にする
HINT 下からはずして関数にしていく
レッスン9のテクニックで紹介した通り、プログラミングエリアで接続したブロックをクリックすると、その下に接続したブロックがすべて選択されます。このため、長くなったプログラムを関数で整理したいときは、下の処理から順に接続を解除して[関数[ ]]ブロックにまとめていきます。
間違った場合は?
関数としてまとめたブロックの内容が間違っていたり、大切な処理が抜けていたりするとプログラムが正しく動きません。関数に処理をまとめるときは、接続するブロックの範囲と数などをよく確認してください。もし間違った場合は、はずしたブロックを元の処理に接続し直してから、内容を確認してやり直しましょう。
5エージェントの移動を関数にする
HINT 作った関数は少し離して配置する
HINT 関数に含める範囲を確認しよう
手順5ではエージェントが水源から移動して、所定の位置に着くまでを[doMove]の関数にしています。エージェントはこの動作を使って耕す範囲を増やすので、非常に重要な処理となります。関数にまとめる範囲を確認して、処理が正確に行われるようにしましょう。
6水源を作る動作を関数にする
HINT 一度だけ実行する処理も関数にしよう
水源を作る動作や農地の元を作る動作は、この章のプログラムの中では最初の1回だけ実行されます。関数にまとめなくても、プログラムの動作には支障がありません。ただし、ほかの処理と同じようにまとめておくとプログラム全体の流れが分かりやすくなります。また、後から農地の大きさを変更するようなときでも、メインの処理はそのままにしておき、関数の中だけ修正すればいいので手直しがしやすくなります。
HINT 縮小表示で全体を確認しよう
7農地を作る動作を関数にする
HINT ほかのプログラムに使ってもいい
ピラミッドや養鶏場を作ったプログラムも関数を使ってコンパクトにまとめられます。関数の使い方をマスターしたら、今までに作ったプログラムも簡潔にできるか試してみましょう。
HINT 関数の内容を確認しておこう
手順7までが終わったら、関数でまとめた内容がすべて正しいものになっているか、各手順の最後の操作を見て確認しましょう。ブロックの脱落などがあった場合は、前後の関数に余分なブロックが含まれていないか確認し、正しい形に修正しましょう。