マインクラフトをプログラミング(Day 2 ブロック作り)
マインクラフトといえば、建物を作ることが何よりも醍醐味。今回は、今自分がいる場所に新しくブロックを作ってみたいと思います。今日のプログラムは大きく二つのプログラムからなります。
1 自分の場所を知る。
2 自分の場所にブロックを作る。
ブロックを作るときには、前回のブログでも書いたXYZ座標を指定してブロックを作ります。ですので、どのXYZ座標にブロックを作るかを事前に把握しなければなりません。まずは「自分の場所」を把握して、その場所にブロックを作ってみましょう。Minecraftの立ち上げ方については、以下のとおりです。
1.「MinecraftTools」フォルダにある「Start_Server」というファイルをダブルクリック。
2.アプリケーションから「Minecraft」を選択し、Minecraftを立ち上げ、「Play」。
3.新たに立ち上がったウィンドウから「Multiplayer」モードを選択し、自分が作ったワールド(上記の例では「Minecraft Python World」)の画像をクリック。これで、サーバーにアクセスができます。
インストールや初期起動についてはこちらの記事を参照してください。
ステップ1 自分の場所を知る。
前回と同様に早速コードを書いてみます。
from mcpi.minecraft import Minecraft # connect Minecraft
mc = Minecraft.create() # create a new world
position = mc.player.getTilePos() # Extract my current position
# Acquire XYZ coordinates
x = position.x
y = position.y
z = position.z
さて、コードの解説です。いくつか見慣れたものがありますね。
from mcpi.minecraft import Minecraft # connect Minecraft
mc = Minecraft.create() # create a new world
まず、このコードは前回と同じ。Minecraftに接続し、Minecraft.create()で新たな世界を構築します。
position = mc.player.getTilePos() # Extract my current position
こここおこのコードのうち、「mc.player」は前回と同じですね。上記の「Minecraft.create()」で指定した「mc」を引用して、そのあと、「player」に関する作業をしていています。次の「getTilePos()」が肝で、これてplayerの現在のポジションを取得します。これらを「position」に指定します。「position」という名前はどのような名前に変更しても大丈夫です。
# Acquire XYZ coordinates
x = position.x
y = position.y
z = position.z
ステップ1の最後のコードです。上記のpositionには様々な情報が含まれており、この中から、x, y, zの座標を取得します。考え方は「position.座標」です。座標にはx, y, またはzを指定されます。これで、現在のx, y, zの場所を指定することができました。
ステップ2 自分の場所にブロックを作る。
次に、自分が今いる場所にブロックを作ります。コードは上記のコードに二行足すだけ!
blockType = 57 # DIAMOND_BLOCK
mc.setBlock(x, y, z, blockType) # stack block
早速、解説です。
blockType = 57 # DIAMOND_BLOCK
ここでは、自分が作るブロックのデザインを指定しています。ここでは「57」番として、Diamond Blockを指定しています。こんなやつです。
どの番号がどのデザインを指しているかについては、以下のサイトがわかりやすいです。
mc.setBlock(x, y, z, blockType) # stack block
最後のコードです。このコードでは、「setBlock」で「いまからブロックを作りますよー」ということを指定して、「「x, y, z」の場所に、「blockType」というブロックを作ります」、という意味です。すでに「x, y, z」については、ステップ1で自分の場所を指定していますよね。そして、blockTypeについては上のコードで57番=Diamond Blockを指定しています。こによって、自分の場所にダイヤモンドブロックでブロックを作るという指示を出しています。以下のような感じになったのではないでしょうか?
まとめ
では、最後にコードをまとめて記載します。
from mcpi.minecraft import Minecraft # connect Minecraft
mc = Minecraft.create() # create a new world
position = mc.player.getTilePos() # Extract my current position
# Acquire XYZ coordinates
x = position.x
y = position.y
z = position.z
blockType = 57 # DIAMOND_BLOCK
mc.setBlock(x, y, z, blockType) # stack block
いかがでしたでしょうか?自分の好きなデザインのブロックを作ることができましたか?今回はブロックを積み上げるだけですが、次回は立体の建物を作っていきたいと思います!
この記事が気に入ったらサポートをしてみませんか?