マイクラプログラミング部『トンネルを掘る』

以前、Minecraft(マインクラフト)内でプログラミングを行う、ComputerCraftEdu(コンピュータークラフト イーディーユー)というMod(モッド)を紹介しました。

※ComputerCraftEduを紹介した関連記事は以下。
ComputerCraftEdu
ComputerCraftEdu(タートル制御編)
ComputerCraftEdu(プログラミング編)

そのComputerCraftEduの実践編として、マイクラプログラミング部シリーズをお届けします。
今回は、タートルを使ってトンネルを掘る作業に挑戦してみます。

地形の谷間に石レンガのブロックで道を作りました。
この道の両側にトンネルを掘って、道を延ばしていきます。


まず、タートルを、トンネルを掘る壁面に向かい合うように配置します。

貫通するまで前に掘り進むプログラム


「WHILE」を使った繰り返し文を作成します。

繰り返しの条件は、目の前のブロックを調べる「Inspect Block」、「Does Not Equal」、ブロックの種類を指定する「Block Name」を並べて、「Block Name」には『何もブロックがない』ことを意味する「Air」を指定します。

これで『目の前に何かブロックがある間』繰り返す処理になります。


次に、繰り返し処理の内容ですが、以下の処理を順に実行します。

1) 目の前のブロックを掘る「Dig」
2) 掘って空いた目の前のスペースに進む「Move Forward」


しかし、これではうまくいかないケースがあります。

例えば掘り進めていく途中で、砂のブロックがいくつか縦に積み重なっている層がある場合、砂のブロックを掘ると、その上に積み重なっていた砂のブロックが落ちて来て、今掘った目の前のスペースが埋まってしまいます。

これでは、上記の繰り返し処理の1)を実行した後に2)を実行しようとして『落ちて来た砂のブロックに阻まれて前に進めない』というエラーが発生してしまいます。

掘ってスペースが空いたら前へ進む

このエラーを回避するために、上記2)の処理を実行する条件を追加します。

「IF」を使った条件処理を作成し、条件は、目の前のブロックを調べる「Inspect Block」、「Equals」、ブロックの種類を指定する「Block Name」を並べて、「Block Name」には『何もブロックがない』ことを意味する「Air」を指定します。

これで『目の前に何もブロックがなければ』前へ進む処理になります。


このプログラムで、トンネルが貫通するまで真っ直ぐ掘り進むタートルが出来上がりました。


ただし、トンネルを掘る途中で地下空洞に突き当たったら、タートルはトンネルが貫通したと判断し、そこでプログラムの実行は終了します。

トンネル掘りを実行させたタートルが、なかなか地形の反対側に出てこない場合、途中で地下空洞に遭遇してストップしている可能性があるので注意しましょう。

このプログラムの詳細は、以下の動画を参考にしてください。