raspi:MineCraft pi

raspiには、minecraft pi をいう機能制限版のMineCraftがインストールされています。されていなければ、インストールすることもできます。

$ sudo apt-get update
$ sudo apt-get install minecraft-pi

デスクトップの “Menu – Games” にMinecraft Piが入ってますので、起動してみます。

起動できれば、terminalからpython2を起動します。
コードは、全てpython2で実行します。

Hello worldをスクリーンに表示

from mcpi import minecraft
mc = minecraft.Minecraft.create()
mc.postToChat("Hello world")

自分がどこにいるか調べる

pos=mc.player.getPos()

テレポート
自分の位置の空中100のところにテレポート

x, y, z = mc.player.getPos()
mc.player.setPos(x, y+100, z)

ブロックを置く
自分が立っている場所の隣に石のブロックを置く
構文:mc.setBlock(x, y, z, id)
idは、空気:0 , 草:2 , 土:3
他にもidがあるのかな?

x, y, z = mc.player.getPos()
mc.setBlock(x+1, y, z, 1)

変数としてのブロック
idを変数に格納して利用できる

dart=block.DART.id
mc.setBlock(x, y, z, dart)

idがわかっている場合
dart=3
mc.setBlock(x, y, z, dart)

特殊なブロック
色を付けることが出来る特殊なブロックがある。例えば、”wool”
これは、追加のプロパティをもっています。
設定するには、4つ目のパタメータを使う。
0:白 . 1:オレンジ . 2:マゼンダ , 3:ライトブルー , 4:黄色

wool=35
mc.setBlock(x, y, z, wool,1)

複数のブロックを置く
setBlockで1つのブロックを置くのと同じように、setBlocksで複数置くことが出来る

stone=1
x, y, z = mc.player.getPos()
mc.setBlocks(x+1, y+1, z+1, x+11, y+11, z+11, stone)

これらを利用して、命令を組み合わせると、自分が歩いたところにブロックを置くことも出来る。

from mcpi import minecraft
from time import sleep

mc = minecraft.Minecraft.create()

flower = 38

while True:
    x, y, z = mc.player.getPos()
    mc.setBlock(x, y, z, flower)
    sleep(0.1)

while True: を利用したので、永遠に花を置いていきます。Pythonウインドウで”Ctrl + c”を押すと止められます。

ある特定のブロックの歩いている時だけ、花を落とすには、
getBlockを使い、ブロックの種類を判定しながら、ブロックを配置する命令を記述します。

x, y, z = mc.player.getPos()  # プレイヤーの位置 (x, y, z)
this_block = mc.getBlock(x, y, z)  # ブロックのID
print(this_block)
while True:
    x, y, z = mc.player.getPos()
    block_beneath = mc.getBlock(x, y-1, z)
    print(block_beneath)
grass = 2
flower = 38

while True:
    x, y, z = mc.player.getPos()  # プレイヤーの位置 (x, y, z)
    block_beneath = mc.getBlock(x, y-1, z)  # ブロックのID

    if block_beneath == grass:
        mc.setBlock(x, y, z, flower)
    sleep(0.1)

自分が立っているところが草じゃ無ければ、草に変えるには、このよう変更すればいい。

while True:
    x, y, z = mc.player.getPos()  # プレイヤーの位置 (x, y, z)
    block_beneath = mc.getBlock(x, y-1, z)  # ブロックのID

    if block_beneath == grass:
        mc.setBlock(x, y, z, flower)
    sleep(0.1)

TNTブロック
TNTブロックを置くには、このようにすればよいが、爆発しません。

tnt = 46
mc.setBlock(x, y, z, tnt)

爆発するブロックを置くには、tntのあとに、” ,1″を付けます。

tnt = 46
mc.setBlock(x, y, z, tnt, 1)

TNTブロックのビルを作って爆発させてみる。

tnt = 46
mc.setBlocks(x+1, y+1, z+1, x+11, y+11, z+11, tnt, 1)

基礎的なことは、この程度です。
ブロックの種類や色など他にも色々あるようですから、詳しくは、APIリファレンスを見よう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です