【マイクラ×Python】座標を使いこなせ!位置確認とブロックの置き方

マインクラフトの広大な世界で、場所を正確に知るために「座標」は欠かせません。

例えば、冒険ぼうけんに出かけたときに家の座標を覚えておけば、遠くに行っても迷子まいごになる心配はありません。座標を知っていれば、重要な場所へかんたんに行くことができます。

この記事では、Pythonというプログラミング言語を使って、自分の位置を確認かくにんしたり、指定した場所にブロックを置いたりする方法を紹介しょうかいします。

座標を使いこなして、もっと便利にマイクラの世界を楽しみましょう!

プログラミング初心者でも安心して進められるよう、ステップごとにていねいに説明します。

 

スポンサーリンク

マインクラフトとPythonの連携について

マインクラフトをPythonで操作するには、特定の環境かんきょうを整える必要があります。

くわしいセットアップ方法は、前回の記事で説明していますので、まだ準備ができていない方はそちらをチェックしてみてください。

 

 

マイクラでは座標を使って場所を指定する

マイクラの座標

まず、座標の基本的な仕組みを解説します。

座標ざひょうとは、ある位置を特定するための数字の組み合わせです。

マイクラではx,y,z、3つの座標軸ざひょうじくがあり、原点(xyzすべてが0の場所)からどれだけはなれているか表しています。

  • xじく … 東西の方向(東がプラス、西がマイナス)
  • yじく … 上下の方向(上がプラス、下がマイナス)
  • zじく … 南北の方向(南がプラス、北がマイナス)

 

座標を表示してみよう

今自分がいる座標を表示するプログラムを作ってみましょう。

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

# プレイヤーの座標を取得し、変数x,y,zに代入
x, y, z = mc.player.getTilePos()

# 座標をチャット欄に表示
mc.postToChat(f"X: {x}, Y: {y}, Z: {z}")

mc.player.getTilePos()でプレイヤーの座標を取得し、mc.postToChat()でチャットらんに取得した座標の値を表示しています。

  • mc.player.getTilePos():プレイヤーの座標(ブロック単位)を取得する。
  • mc.postToChat():マイクラのチャットらんにメッセージを表示する。

また、「#」からその行の終わりまではコメントです。実行してもコメントは無視されるので、プログラムの動きには関係ありません。どのような処理をしているのかメモしておくと便利です。

 

上のプログラムを入力したら、「mcpipy」フォルダに保存しましょう。ファイル名は「position.py」にしました。

マイクラのワールドに入り、チャットらんに以下のコマンドを入力して実行しましょう。

/py position

チャット欄にコマンドを入力して実行

 

実行した結果、今自分がいる座標が表示されます。

自分がいる座標が表示される

 

ブロックを置いてみよう

新しくファイルを作成し、以下のプログラムを入力しましょう。

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

# 原点にダイヤブロック(ブロック番号:57)を置く
mc.setBlock(0, 0, 0, 57)

 

mc.setBlock(x, y, z, block_id)は、指定した場所にブロックを設置する命令です。

mc.setBlock

x, y, zの部分にブロックを設置する座標を指定します。具体的な数字でもいいですし、変数でもOKです。

block_idの部分には、設置するブロックの種類を指定します。各ブロックには番号が割り当てられていて、1は石、2は草ブロック、3は土などがあります。

ブロックの番号の一覧は、下のサイトなどで調べられます。

今回は原点(x=0,y=0,z=0)にダイヤブロック(ブロック番号57)を置くプログラムを作成しました。

 

プログラムができたらファイル名をつけて保存し、実行してみましょう。

あたりを見わたしてみると、ダイアブロックが置かれています。ここが原点です。

原点に置かれたダイアブロック

 

東西南北にブロックを置く

プレイヤーを中心に東西南北にブロックを置くプログラムをつくりましょう。

プレイヤーを中心に東西南北にブロックを置く

 

新しくファイルを作成し、以下のプログラムを入力します。

import mcpi.minecraft as minecraft

mc = minecraft.Minecraft.create()

# プレイヤーの座標を取得し、変数xyzに代入
x, y, z = mc.player.getPos()

# 南に青い羊毛(ブロック番号:35 データ番号:11)を置く
mc.setBlock(x, y + 3, z + 1, 35, 11)

# 北に赤い羊毛(ブロック番号:35 データ番号:14)を置く
mc.setBlock(x, y + 3, z - 1, 35, 14)

# 東に灰色の羊毛(ブロック番号:35 データ番号:7)を置く
mc.setBlock(x + 1, y + 3, z, 35, 7)

# 西に灰色の羊毛(ブロック番号:35 データ番号:7)を置く
mc.setBlock(x - 1, y + 3, z, 35, 7)

 

プレイヤーの座標を取得し 変数xyzに代入する

mc.player.getPos()

下はプレイヤーの座標を取得し、その値を変数に記憶させる命令です。

x, y, z = mc.player.getPos()

 

プレイヤーの座標を取得する

「mc.player.getPos()」は、座標を表示してみようで使った「mc.player.getTilePos()」と同じプレイヤーの座標を取得する命令ですが、ちがいがあります。

  • mc.player.getTilePos();プレイヤーの座標(ブロック単位、整数)を取得する
  • mc.player.getPos():プレイヤーの座標(小数点以下の値)を取得する

細かい位置を知りたいときは「mc.player.getPos()」を使って、ブロックの位置だけを知りたいときは「mc.player.getTilePos()」を使うなど使い分けてみましょう。

 

=(イコール)で変数に値を代入する

Pythonでは「=(イコール)」は「等しい」という意味ではなく、「右側の値を左側の変数に代入する」という意味です。

たとえば、「x = 10」と書いた場合、「xが10と等しい」という意味ではなく、「xという変数に10を入れる」という意味になります。

  • x = 10   :xに10を入れる
  • y = x    :yにxの値を入れる
  • z = y + 1:yの値に1足した結果をzに入れる

 

つまり、「x, y, z = mc.player.getPos()」では、mc.player.getPos()でプレイヤーの座標を取得し、それぞれ x にx座標、y にy座標、z にz座標が保存されます。

Scratchでいうところの

  • 変数xをプレイヤーのx座標にする
  • 変数yをプレイヤーのy座標にする
  • 変数zをプレイヤーのz座標にする

と同じ意味です(Scratchにz座標はありませんが)。一行でまとめて代入できるなんて、Pythonはとても便利ですね!

この変数に保存した座標を基準に、ブロックを置いていきます。

 

南に青い羊毛を置く

下はさっき保存したプレイヤーの座標に石ブロックを置く命令です。

mc.setBlock(x, y, z, 1)

座標の指定に変数を使っています。

 

では、この座標の1ブロック南に青い羊毛を置いてみましょう。

mc.setBlock(x, y + 3, z + 1, 35, 11)

zじくの値が増える方向が南なので、zは「z + 1」にします。

また、ブロックをプレイヤーの頭上に置くためにyは「y + 3」にしました。足元にブロックを置きたい場合は「y – 1」にするとよいでしょう。

 

羊毛のブロック番号は35。その後ろの11はデータ番号です。

データ番号で色や材質を細かく指定することができます。羊毛ブロックの場合、11は青色のデータ番号になります。

羊毛のデータ番号

 

北に赤い羊毛を置く

次に、1ブロック北に赤い羊毛を置いてみましょう。

mc.setBlock(x, y + 3, z – 1, 35, 14)

南の逆(zじくの値が減る方向)なので、zは「z – 1」にします。

赤い羊毛ブロックのデータ番号は14です。

 

東西に灰色の羊毛を置く

同じやり方で東と西にもブロックを置きましょう。

xじくの増える方向が東で、減る方向が西です。

灰色の羊毛ブロックのデータ番号は7です。

 

実行してみよう!

プログラムできたら「compass.py」とファイル名をつけて保存し、実行してみましょう。

上を見上げると、羊毛が十字に置かれているはずです。

羊毛が十字に置かれている

 

上からみるとこんな感じです。

羊毛が十字に置かれている

 

まとめ

東西南北に柱を立てるプログラム

今回の記事では、座標を使って自分の位置を確認したり、指定した場所にブロックを置いたりする方法を学びました。

プログラミングで座標を活用することで、大きな建物を正確に配置したり、複雑な作業を自動化できるようになります。

今回作ったプログラムを参考に、いろいろな場所にブロックを置いてみてくださいね!

 

最後に、今回使用した命令とPythonの構文をおさらいしておきましょう。

今回使用した命令

  • mc.player.getTilePos():プレイヤーの座標(ブロック単位、整数)を取得する。
  • mc.player.getPos():プレイヤーの座標(小数点以下の値)を取得する。
  • mc.postToChat():マイクラのチャットらんにメッセージを表示する。
  • mc.setBlock(x, y, z, block_id):指定した座標に任意の種類のブロックを設置する。
    x, y, z:ブロックを置く位置の座標
    block_id:設置するブロックの種類(ブロック番号とデータ番号)

Pythonの構文

  • #:コメント。「#」からその行の終わりまで無視される。
  • 変数名 = 式 :右側の値を左側の変数に代入する。
タイトルとURLをコピーしました