マインクラフトで広い世界を冒険していると、知らない間に迷子になってしまった…ということ、ありませんか?
目印になるタワーを作りたいけど、自分で作ると高いところで落ちる危険がありますよね。
今回は、Pythonで「自動タワー作りプログラム」を作ってみましょう!
マインクラフトとPythonの連携について
マインクラフトをPythonで操作するためには、特定の環境が必要です。
セットアップ方法は、前回の記事でくわしく説明しているので、まだ準備ができていない人はそちらをチェックしてみてください。
このプログラムでやること
今回作成するプログラムでは、プレイヤーの近くに高さ50ブロックのタワーを立てます。
タワーにはガラスブロックとシーランタンを使うので、夜でも目立つし遠くからでも見つけやすい目印になります。
完成したソースコード
まずは、完成したプログラムを見てみましょう。
import mcpi.minecraft as minecraft
# Minecraftに接続
mc = minecraft.Minecraft.create()
# プレイヤーの座標を取得し、変数xyzに代入
x, y, z = mc.player.getPos()
# タワーの位置をプレイヤーから少し横にずらす
x += 5
# タワーを作成
for _ in range(25):
mc.setBlock(x, y, z, 95, 3) # ガラスブロック
mc.setBlock(x, y + 1, z, 169) # シーランタン
y += 2 # 次の高さを計算
プログラムの説明
ガラスブロックとシーランタンを順番に置く処理を25回くり返して、高さ50ブロックのタワーを作っています。
for文で同じことをくり返す
Pythonでは、「同じことを何回もくり返したいとき」に for 文を使います。
くり返したい処理
for 文では、最初の行の次に「くり返したい処理」を書き、この処理の前には、半角スペースを4つ入れます。
関連記事【子ども向け】プログラミングの基本構造とは? – 順次、分岐、反復について学ぼう!
イテラブルってなに?
イテラブルとは、「ひとつずつ順番にデータを取り出せるもの」のことです。
リストや文字列、range() などがあり、for文を使うとデータを順番に取り出して、1つずつ使うことができます。
たとえば、for i in range(5) と書くと、「5回、同じ処理をくり返す」という意味になります。range(5) は「0から4までの数字を1つずつ取り出す」という役割があり、計5回のくり返しになります。
- 1回目は i = 0
- 2回目は i = 1
- 3回目は i = 2
- 4回目は i = 3
- 5回目は i = 4
このように、for 文の中で使う i に数字が順に入っていきます。
今回のタワー作りでは、for _ in range(25) と書いています。この _ という記号は、「変数は使わないけれど、回数だけくり返したい」というときに使います。Scratchでいう「25回くり返す」ブロックと同じような動きです。
ブロックを置く
mc.setBlock(x, y + 1, z, 169) # シーランタン
mc.setBlock() はマインクラフトの中にブロックを置く命令です。ブロックは空色のガラス(95, 3)とシーランタン(169)を指定しています。
シーランタンはガラスブロックの上に置くため、y + 1 の高さに配置します。
ブロックを置く高さを計算
y += 2 の部分は、次のブロックを置く高さを計算しています。
たとえば:
- 1回目は y が 0 と 1 の高さ
- 2回目は y が 2 と 3 の高さ
- 3回目は y が 4 と 5 の高さ
このように、ブロックが2つずつ順番に上へ積み上がっていきます。
実行してみよう!
プログラムが完成したら「tower.py」という名前でファイルを保存し、実行してみましょう。
プレイヤーの少し横にガラスとシーランタンでできたタワーが現れるはずです。夜や遠くからでも光って見えるので、目印にぴったりです。
まとめ
今回は、Pythonを使ってマインクラフトの中に目立つタワーを自動で作るプログラムを紹介しました。
このプログラムを使えば、自動で光るタワーができ、迷子になる心配が少なくなりますね!
最後に、Pythonのくり返し処理(for文)の使い方を確認しておきましょう。
くり返したい処理
たとえば、for i in range(10) とすると、10回くり返し、変数 i は0から9まで変化します。