読者です 読者をやめる 読者になる 読者になる

Raspberry Π

Raspberry Piでいろんなことをやってみようというブログです。

mincraft

第3回 マインクラフト内にプログラムからブロックを置いてみる

前回でマインクラフトのチャット欄にメッセージを送るプログラムを作成しました。

マインクラフトの醍醐味はブロックを使っての創作だと思いますので、
今回はプログラムから自動でブロックを置けるようにします。

f:id:taka230035:20161027230348p:plain:w300



ブロックを1つ置くプログラムの作成

今回はプレイヤーの前方に1つだけブロックを置くプログラムです。
これができるようになれば、応用することでどんな建造物も作れることになります。

今回のファイル名は適切に
mine02.py
として、記載するコードは以下としました。
※インデントに全角空白を使っているので気をつけてください。
※特殊記号文字も使っているのでエラーになる可能性があります。

#!/usr/bin/env python
# -*- coding: utf-8 -*- # 文字コード
from mcpi import minecraft #①
from mcpi import block #②

def main(): # 初期設定
  mc = minecraft.Minecraft.create() #③
  pos = mc.player.getTilePos() #④


  mc.setBlocks(pos.x+5, pos.y, pos.z,
    pos.x+5, pos.y, pos.z, block.GRASS.id) #⑤

if __name__ == "__main__":# この辺はおまじない
  main()


上記で準備は完了です。




ブロックを置くプログラムの実行

今回もマインクラフトは実行している状態として、
ラズパイのターミナルより

python mine02.py

と実行します。

そうすると、目の前に1つ土ブロックが作成されます。
f:id:taka230035:20161027230426p:plain:w200
   ↓

f:id:taka230035:20161027230441p:plain:w200

注意点としては、
マインクラフトの世界では
前後左右を表すX軸、Z軸と
高さを表すY軸が設定されているようで。

今回のプログラムは、必ずプレイヤーが向いている前方に置かれるのではなく、X軸にて自分から5マス離れた場所に置く となります。
ですので、プレイヤーの向きによっては、ブロックが後ろになる場合もあります。
どの場所にいても、プログラム実行時にはブロックが出現する場所とプレイヤーの距離は5マスとなります。




解説

コードの解説をしたいと思います。
作成したmine02.pyのコードの
①については
minecraftプログラムを読み込むものとなります。

②については
minecraftブロックプログラム読み込みとなります。

③については
ラズパイ上で実行しているマインクラフトを認識するプログラムです。

④については
マインクラフト内のプレイヤーの位置を取得するプログラムです。

⑤については
プレイヤーの現在位置より、X軸前方5マス目に土ブロックを設置するプログラムとなります。

あとはほとんどおまじない部分となります。




おまけで

ちなみに、となりますが、
今回ブロック作成プログラムは、すでにブロックが存在する場所にも置くことができ、ブロックを上書きします。

今度は以下のプログラムを実行してみます。
※インデントに全角空白を使っているので気をつけてください。
※特殊記号文字も使っているのでエラーになる可能性があります。

#!/usr/bin/env python
# -*- coding: utf-8 -*- # 文字コード
from mcpi import minecraft
from mcpi import block

def main(): # 初期設定
  mc = minecraft.Minecraft.create()
  pos = mc.player.getTilePos()


  mc.setBlocks(pos.x-3, pos.y-1, pos.z-3,
    pos.x+3, pos.y-1, pos.z+3, block.GRASS.id) #⑥

if __name__ == "__main__":# この辺はおまじない
  main()


というコードを作成して、実行してみると
f:id:taka230035:20161027230521p:plain:w200
   ↓

f:id:taka230035:20161027230540p:plain:w200
そうするとプレイヤーが立っている地面の周囲のブロックが砂から土ブロックに変更されました。
強制的にオブジェクトを作成できるのです。




おまけコードの解説

おまけコードの解説をしたいと思います。 作成したコードの
⑥については
プレイヤーより1つ低い位置の周囲(X軸Z軸)3マス分を土ブロックにするプログラムです。
今回は高さのY軸も設定しました。


ブロックを置くプログラムについては以上です。
結構ワクワクしてきてまして、次回は大きめな建造物!?をプログラムより作成してみます。


やってみよう! マインクラフト組み立てガイド【本書限定袋とじ特典付き】

やってみよう! マインクラフト組み立てガイド【本書限定袋とじ特典付き】