マインクラフトで川や谷に橋をかけたことはありますか?
ブロックをひとつずつ置いて長い橋を作るのは大変ですが、プログラムを使えばかんたんです。
今回は、Pythonでくり返し処理や条件を使って、東の方向に橋をのばしていくプログラムを作ってみましょう!
マインクラフトとPythonの連携について
Pythonでマインクラフトを動かすには、特別な準備が必要です。
セットアップ方法は、前の記事でくわしく説明していますので、まだ準備ができていない人はそちらをチェックしてみてください。
このプログラムでやること
今回は、プレイヤーのいる位置から東側に向かって橋をかけるプログラムを作ります。
条件として、橋が100ブロック未満の長さであり、進行方向にブロックがない場合に限り、橋をのばすようにします。
完成したソースコード
まずは、完成したプログラムを見てみましょう。
import mcpi.minecraft as minecraft
# Minecraftに接続
mc = minecraft.Minecraft.create()
# プレイヤーの座標を取得
x, y, z = mc.player.getPos()
# 橋の長さ
length = 0
# 東の方角に橋を作る
# 前にブロックがない かつ 橋の長さが100ブロック未満
while mc.getBlock(x + 1, y - 1, z) == 0 and length < 100 :
mc.setBlock(x + 1, y - 1, z, 98) # 石レンガ(98)を置く
length += 1 # 橋の長さを1増やす
x += 1 # 1ブロック前に進む
プログラムの説明
while文で条件を満たしている間くり返す
Pythonでは、「指定した条件を満たしている間、処理くり返す」ときに while 文を使います。
くり返したい処理
while 文では、条件を満たしている(True)かぎり処理をくり返します。
for文と同じように最初の行の次に「くり返したい処理」を書き、この処理の前には、半角スペースを4つ入れます。
このプログラムでは、while文を使って「東方向に進行方向の地面が空いていること」かつ「橋が100ブロック未満の長さであること」を条件に、橋を作る処理をくり返しています。
True(真) と False(偽)
TrueとFalseは「真」または「偽」を表す真偽値(ブール値)と呼ばれます。
プログラムの条件で「正しいか」「正しくないか」を判断するときに使われます。
- True(真) :条件が「正しい」とき
- False(偽):条件が「正しくない」とき
Pythonでは、数値の0や空の値はFalseとしてあつかわれ、それ以外の値はTrueとされます。
条件の書き方
比較演算子を使って、さまざまな条件を設定できます。
演算子 | Trueになる条件 |
---|---|
== | 右辺が左辺に等しい |
!= | 右辺が左辺に等しくない |
> | 右辺が左辺未満 |
>= | 右辺が左辺以下 |
< | 右辺が左辺より大きい |
<= | 右辺が左辺以上 |
複雑な条件
条件を組み合わせたいときには、論理演算子を使います。
演算子 | 意味 |
---|---|
and | すべての条件がTrueのときにTrue |
or | どれか1つの条件がTrueであればTrue |
not | FalseであればTrue、TrueであればFlse |
ブロックのIDを調べる
mc.getBlock()は指定した座標のブロックIDを取得する命令です。
このプログラムでは、進行方向1ブロック先の地面が空気(IDが0)かどうかを確認しています。
この条件で、橋をかける予定の位置にブロックがないことを確認しています。
橋の長さの上限
これは、橋の長さが100ブロック未満かどうかを判定しています。これにより、無限に橋がのびないようにしています。
mc.getBlock()による空き状況の確認と、length < 100の条件をandで組み合わせることで、橋の長さが100ブロックをこえず、さらに進行方向にブロックがないときだけ橋をのばすようにしています。
ブロックを置く
mc.setBlock()はマインクラフトの中にブロックを置く命令です。今回は石レンガ(IDが98)を使っています。
length += 1
ブロックを置いた後、橋の長さ(length)を1増やします。
東方向に1ブロック進む
この行で、東方向に1ブロック進むための処理をしています。この操作によって、次のブロックを1ブロック先の位置に置くことができます。
実行してみよう!
プログラムが完成したら「bridge.py」という名前でファイルを保存し、実行してみましょう。
プレイヤーの位置から東方向に石レンガの橋ができるはずです。
まとめ
今回は、Pythonを使って橋をかけるプログラムを紹介しました。
今回は東の方向に橋を作りましたが、コードを少し工夫すれば他の方向にも橋を作ることができます。ぜひ、自分だけの橋を作るプログラムにチャレンジしてみてくださいね!
最後にくり返し処理を行うwhile文と条件の使い方をおさらいしましょう。
while文
くり返したい処理
比較演算子の例
演算子 | Trueになる条件 |
---|---|
== | 右辺が左辺に等しい |
!= | 右辺が左辺に等しくない |
> | 右辺が左辺未満 |
>= | 右辺が左辺以下 |
< | 右辺が左辺より大きい |
<= | 右辺が左辺以上 |
論理演算子
演算子 | 意味 |
---|---|
and | すべての条件がTrueのときにTrue |
or | どれか1つの条件がTrueであればTrue |
not | FalseであればTrue、TrueであればFlse |