マインクラフトでPythonプログラムを動かすための「Raspberry Jam Mod」を使った、プログラミングサンプルの紹介と解説をしています。
Pythonのバージョンは 3.7.1
今回はマイクラプログラミングの基本ともいえる、ブロックを設置するPythonプログラミングについての解説をしてゆきましょう。
ポイントは2つ。
- 好きなブロックを1個設置する。
- たくさんのブロックを一気に設置する。
setBlock でブロックを1個設置する
まず最初に、ブロックを1個設置するプログラムの一部を紹介すると
1 2 |
# ブロックを1個設置する mc.setBlock(x, y , z, 1) |
という書き方があります。
mc.setBlock のあとに続くカッコの中身は、
x = 東西の座標を指定する数値
y = 高さの座標を指定する数値
z = 南北の座標を指定する数値
1 = ブロックの種類を指定する値
で、「1」と書かれたブロックは灰色のコンクリートのような石を意味します。
実際のプログラミング例を見てゆきましょう。
ご自身の環境で動かしてみたい場合は、以下の場所に保存してください。
ファイルパス(Macの場合)
/Users/ユーザ名/Library/Application Support/minecraft/mcpipy/block.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# coding: UTF-8 # 上のコードを書くことで、日本語のコメントを有効にします # マインクラフト用のプログラムを読み込みます from mine import * # マインクラフト用のプログラムを、すぐに使えるように「mc」として準備します mc = Minecraft() # チャットメッセージを出力します mc.postToChat("block.py の処理を開始します") # 自分の位置情報を取得します # 取得してきた位置情報は、それぞれ変数 x, y, z に保存されます x,y,z = mc.player.getPos() # チャットメッセージを出力します mc.postToChat("ブロックを1個つくります") # 石のブロックを設置 mc.setBlock(x, y, z, 1) # 1つ高い場所に土のブロックを設置 mc.setBlock(x, y+1, z, 3) # もう1つ高い場所に材木のブロックを設置 mc.setBlock(x, y+2, z, 5) # チャットメッセージを出力します mc.postToChat("実行が終了しました") |
このプログラムを実行する方法は、チャットメッセージの投稿部分に
/py block
と入力し、エンターキーを押せば実行されます。ファイルの拡張子「.py」の記入はいりません。
実行の結果、以下のようなブロックが生成されます。
setBlocks で複数のブロックを設置する
次に、複数のブロックを1回の命令で設置するプログラムは以下のように書きます。
1 2 3 4 5 |
# ブロックを複数設置する to_x = x+5 to_y = y+5 to_z = z mc.setBlocks(x, y, z, to_x, to_y, to_z, 12) |
という書き方です。
これは高さ5ブロックぶんの壁を作るプログラムで、mc.setBlocks (Block の複数形である Blocks)のあとに続くカッコの中身は、
x = 東西の座標を指定する数値(起点)
y = 高さの座標を指定する数値(起点)
z = 南北の座標を指定する数値(起点)
to_x = 東西の座標を指定する数値(終点)
to_y = 高さの座標を指定する数値(終点)
to_z = 南北の座標を指定する数値(終点)
12 = ブロックの種類を指定する値(今回は砂ブロック)
であり、x, y, z で指定する起点(はじまりの場所)から to_x, to_y, to_z で指定する終点(終わりの場所)の範囲内を、指定するブロックで埋め尽くすという意味になっています。
mc.setBlock は1個のブロックしか設置できませんでしたが、
mc.setBlocks を使うことで、板や壁、高くて太い柱などを1回のプログラムで作ることが可能です。
実際のプログラミング例を見てゆきましょう。
ご自身の環境で動かしてみたい場合は、以下の場所に保存してください。
ファイルパス(Macの場合)
/Users/ユーザ名/Library/Application Support/minecraft/mcpipy/blocks.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# coding: UTF-8 # 上のコードを書くことで、日本語のコメントを有効にします # マインクラフト用のプログラムを読み込みます from mine import * # マインクラフト用のプログラムを、すぐに使えるように「mc」として準備します mc = Minecraft() # チャットメッセージを出力します mc.postToChat("block.py の処理を開始します") # 自分の位置情報を取得します # 取得してきた位置情報は、それぞれ変数 x, y, z に保存されます x,y,z = mc.player.getPos() # 砂の壁を作ります to_x = x+5 to_y = y+5 to_z = z mc.setBlocks(x, y, z, to_x, to_y, to_z, 12) # チャットメッセージを出力します mc.postToChat("実行が終了しました") |
このプログラムを実行する方法は、チャットメッセージの投稿部分に
/py blocks
と入力し、エンターキーを押せば実行されます。ファイルの拡張子「.py」の記入はいりません。
実行の結果、以下のような砂の壁ができあがります。
設置できるブロックの種類はいっぱいある
その他のブロックの種類をちょっとだけ紹介すると、
1 = 石
2 = 土と平坦な草
3 = 土(泥)
4 = 玉石
5 = 材木
6 = 苗木
7 = 岩盤
があります。
その他、みんなが好きそうなブロックとして
10 = 溶岩
46 = TNT(爆薬)
も用意されているほか、数百種類のブロックを指定することが可能です。
どんなブロックの種類が用意されているのかについては、別の機会に紹介したいと思います。
いろいろな場所にブロックを設置して、ちょっとした家を作ってみましょう。