マインクラフトでPythonプログラムを動かすための「Raspberry Jam Mod」を使った、プログラミングサンプルの紹介と解説をしています。
Pythonのバージョンは 3.7.1
今回はマイクラプログラミングの最も基本となる、以下の3点についての解説を含みます。
- チャットメッセージの出力
- 位置情報の取得
- 瞬間移動(テレポート)
まずはじめに、実行してみた画面がこちらです。
チャットメッセージ画面には、プログラムから出力された内容が表示されています。
そしてメッセージの内容をよく見てみると、X(東西)座標がテレポート前とテレポート後では5の変化がありますよね。赤線でかこんでいる部分です。
どのようなプログラムが実行されたのか、ソースコードの中を見てみましょう。
ご自身の環境で動かしてみたい場合は、以下の場所に保存してください。
ファイルパス(Macの場合)
/Users/ユーザ名/Library/Application Support/minecraft/mcpipy/location.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 31 32 33 34 35 36 37 38 39 40 41 42 |
# coding: UTF-8 # 上のコードを書くことで、日本語のコメントを有効にします # マインクラフト用のプログラムを読み込みます from mine import * # マインクラフト用のプログラムを、すぐに使えるように「mc」として準備します mc = Minecraft() # チャットメッセージを出力します mc.postToChat("location.py の処理を開始します") # 自分の位置情報を取得します # 取得してきた位置情報は、それぞれ変数 x, y, z に保存されます x,y,z = mc.player.getPos() # チャットメッセージ X(東西)座標を出力します mc.postToChat("現在はのX(東西)座標は" + str(x)) # チャットメッセージ Y(高さ)座標を出力します mc.postToChat("現在はのY(高さ)座標は" + str(y)) # チャットメッセージ Z(南北)座標を出力します mc.postToChat("現在はのZ(南北)座標は" + str(z)) # チャットメッセージ mc.postToChat("今からテレポートします") # テレポート実行 # mc.player.setPos(移動先のX座標, 移動先のY座標, 移動先のZ座標) mc.player.setPos(x+3, y, z) # テレポート後の自分の位置情報を取得します # 取得してきた位置情報は、それぞれ変数 x, y, z に保存されます x,y,z = mc.player.getPos() # チャットメッセージを出力します mc.postToChat("テレポート後のX(東西)座標は" + str(x)) mc.postToChat("テレポート後のY(高さ)座標は" + str(y)) mc.postToChat("テレポート後のZ(南北)座標は" + str(z)) mc.postToChat("実行が終了しました") |
このプログラムを実行する方法は、チャットメッセージの投稿部分に
/py location
と入力し、エンターキーを押せば実行されます。ファイルの拡張子「.py」の記入はいりません。
チャットメッセージに出力された内容は、以下の9行が実行された結果です。
11行め、「location.py の処理を開始します」
18行め、「現在はのX(東西)座標は…」
21行め、「現在はのY(高さ)座標は」
24行め、「現在はのZ(南北)座標は」
27行め、「今からテレポートします」
38行め、「テレポート後のX(東西)座標は」
39行め、「テレポート後のY(高さ)座標は」
40行め、「テレポート後のZ(南北)座標は」
42行め、「実行が終了しました」
上のプログラムでは、現在の位置から東に3ブロック移動するという実行結果が得られるでしょう。
もっと派手に移動させたい場合は、xとzの数値をいろいろ変更してみると良いでしょう。
しかし、テレポートした先が山の土の中になってしまい、地中に閉じ込められてしまう事も考えられますので、山に埋まらない十分な高さを確保してテレポートすると良いでしょう。
修正するプログラムは31行めのカッコの中です。
以下の例では、現在位置より東に100ブロック、南に200ブロック、高さを20ブロックぶん瞬間移動するような命令になっています。
29 30 31 |
# テレポート実行 # mc.player.setPos(移動先のX座標, 移動先のY座標, 移動先のZ座標) mc.player.setPos(x+100, y+20, z+200) |
いろいろな数字に書き換えて、どんな場所にテレポートできるかを試してみましょう。
しかし、もしプログラムに間違えた記述があった場合は、チャット部分にエラーメッセージが表示されると思います。
エラーメッセージの中に修正箇所のヒントが隠れています。まだプログラミングに慣れないうちは、このエラーメッセージを頑張って日本語に翻訳し、間違えている箇所の見当をつけてみましょう。