お知らせ

『プログラミング能力検定(11月検定)』参加者募集中!

詳細はこちら

【04】ブロックを壊す・掘る

「練習問題」イメージ画像 マイクラ(Python)

この項ではブロックを壊したり掘ったりする命令を学習します。エージェントは前後左右上下の方向に接しているブロックを壊すことができます。「クリエイティブモード」や「サバイバルモード」のときは岩盤を含むほぼすべてのブロックを破壊することができます。

前後左右上下のブロックを破壊する

agent.destroy(FORWARD)
agent.destroy(BACK)
agent.destroy(LEFT)
agent.destroy(RIGHT)
agent.destroy(UP)
agent.destroy(DOWN)

destroyデストロイ は英語で「壊す」という意味です。続く () の中に壊したいブロックの方向を前後上下左右で指定するのですが、ここは move のときと同じです。destroy(BACK) で、前を向いたまま後ろのブロックを壊すこともできます。

ブロックがない空間に向かって destroy を使った場合、何も起こらず特にエラーも出ません。

壊したブロックはアイテムに変わる

壊したブロックはアイテムになる

「クリエイティブモード」では通常、プレイヤーが壊したブロックはアイテムにならずそのまま消失します。ですが、エージェントが壊したブロックはアイテムとして残ります。

例えばダイヤモンド鉱石をエージェントが壊した場合、上の画像のようにダイヤモンドに変わりフワフワ浮いた状態で残ります。特に命令をしなければ、この残されたアイテムをエージェントが回収することはありません。

壊しながら前に進む

destroy課題画像

それでは上の画像のオレンジのブロックを destroymove を使って壊してみましょう。

まずはエージェントの目の前にある赤のブロックを壊します。ブロックは前方にあるのでコードは次のようになります。

agent.destroy(FORWARD)

次はその先にあるオレンジのブロックですが、このままでは壊せないのでエージェントを1ブロック前に移動させます。

agent.destroy(FORWARD)
agent.move(FORWARD, 1)

これでオレンジのブロックを壊せるようになったので destroy で壊して、さらに前に進み、同様にその先の赤のブロックも壊して前に移動します。

agent.destroy(FORWARD)
agent.move(FORWARD, 1)
agent.destroy(FORWARD)
agent.move(FORWARD, 1)
agent.destroy(FORWARD)
agent.move(FORWARD, 1)

これで「前のブロックを壊して、前に移動する」という動作を3回繰り返したことになります。

destroy課題画像2

残るは前方と左右に残ったオレンジのブロック3個です。これは移動せず、このまま destroy の方向だけ変えて壊すことにします。

agent.destroy(FORWARD)
agent.move(FORWARD, 1)
agent.destroy(FORWARD)
agent.move(FORWARD, 1)
agent.destroy(FORWARD)
agent.move(FORWARD, 1)
agent.destroy(FORWARD)
agent.destroy(LEFT)
agent.destroy(RIGHT)

destroy課題画像3

これですべてのブロックを破壊することができました!