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

Minecraftプログラミング レッスン31条件分岐

エージェントの動きを作るには

柵にぶつかったら方向を変える

このレッスンからは、ニワトリが産んだタマゴをエージェントに回収させるためのプログラムを作っていきます。エージェントを繰り返し前に移動させて、障害物があるときに向きが変わるように設定します。

条件分岐で複数の条件と処理を設定できる[もし[真]なら でなければ]ブロックの使い方を覚えましょう。

養鶏場の中をエージェントが自由に動き、タマゴを回収できるようにする

エージェントが柵以外のブロックを直進し、柵の手前で向きが変わるようになる

1エージェントを自分の位置に戻す

HINT エージェントをプレイヤーの位置に呼ぶ

[エージェントを自分の位置にもどす]ブロックを使うとエージェントを呼び出せますが、座標は指定できません。プレイヤーが養鶏場の外にいるときは、養鶏場に入ってからコマンドを実行しましょう。

2条件分岐のブロックを接続する

HINT 複数の条件と処理を設定できる

[もし[真]なら でなければ]ブロックを使うと、[真]で指定した条件のとき、すぐ下に接続しているブロックの処理が行われます。条件を満たさない場合は「でなければ」の下に接続しているブロックの処理が行われます。

3論理ブロックを接続する

HINT 数値以外の条件も比較できる

[[0][=][0]]ブロックの[0]の部分には変数や数値以外にもブロックを組み込めます。ここではエージェントに前にあるブロックを調べて、条件と合うかどうかを比較します。ブロックの種類を条件に使うのは、マインクラフトのプログラミングでよく使われる方法なので覚えておきましょう。

4前を調べさせる

5ブロックの種類を設定する

HINT よく似たブロックに注意しよう

エージェントに「前」を調べさせるブロックとして[エージェントに[ブロック]があるか、[前]を確認させる]があります。これはエージェントの前にブロックまたはレッドストーンがあるかどうかだけを確認するために使います。六角形の形からも分かるように、主に比較演算に使うので注意しましょう。

HINT 移動できるかどうかを判断する

柵の前でエージェントの向きが変わるようにプログラミングしますが、「柵があるかどうか」を条件にすると、柵以外のブロックがあったときに対処できません。このため、手順5ではエージェントの進行方向に[空気]ブロックがある場合、つまり「何もない場合」を条件に設定します。

6エージェントの動作を設定する

7繰り返し処理にする

HINT ニワトリやプレイヤーにはぶつからない

エージェントはプレイヤーと同様に、固体以外のブロックはすり抜けて移動できます。このため、ニワトリやプレイヤー、花や草などは障害物として判断しません。

HINT 繰り返しの条件は後から設定する

[もし[真]ならくりかえし]ブロックは[真]の部分を変更して条件を設定します。[真]のままにしておくと、同じ処理が永遠に繰り返えされてしまいます。手順7ではプログラムを動かすために[真]のままにしていますが、レッスン34でブロックを組み込み、エージェントを止めるための条件に変更します。