【マイクラ×Python】プログラミングで長い橋もラクラク作成!

マインクラフトで川や谷に橋をかけたことはありますか?

ブロックをひとつずつ置いて長い橋を作るのは大変ですが、プログラムを使えばかんたんです。

今回は、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文

Pythonでは、「指定した条件を満たしている間、処理くり返す」ときに whileを使います。

while 条件:
    くり返したい処理

while 文では、条件を満たしている(True)かぎり処理をくり返します。

for文と同じように最初の行の次に「くり返したい処理」を書き、この処理の前には、半角スペースを4つ入れます。

このプログラムでは、while文を使って「東方向に進行方向の地面が空いていること」かつ「橋が100ブロック未満の長さであること」を条件に、橋を作る処理をくり返しています。

 

True(真) と False(偽)

TrueとFalse

TrueFalseは「しん」またはを表す真偽値しんぎち(ブール値)と呼ばれます。

プログラムの条件で「正しいか」「正しくないか」を判断するときに使われます。

  • True(しん) :条件が「正しい」とき
  • False():条件が「正しくない」とき

Pythonでは、数値の0や空の値はFalseとしてあつかわれ、それ以外の値はTrueとされます。

 

条件の書き方

PythonとScratchの比較演算子

比較演算子ひかくえんざんし使ってさまざま条件設定できます

演算子 Trueになる条件
== 右辺が左辺に等しい
!= 右辺が左辺に等しくない
> 右辺が左辺未満
>= 右辺が左辺以下
< 右辺が左辺より大きい
<= 右辺が左辺以上

 

複雑な条件

論理演算子

条件を組み合わせたいときには論理ろんり演算子えんざんし使います。

演算子 意味
and すべての条件がTrueのときにTrue
or どれか1つの条件がTrueであればTrue
not FalseであればTrue、TrueであればFlse

 

ブロックのIDを調べる

mc.getBlock()

mc.getBlock()は指定した座標のブロックIDを取得する命令です。

このプログラムでは、進行方向1ブロック先の地面が空気(IDが0)かどうかを確認しています。

mc.getBlock(x + 1, y – 1, z) == 0

この条件で、橋をかける予定の位置にブロックがないことを確認しています。

 

橋の長さの上限

length < 100

これは、橋の長さが100ブロック未満かどうかを判定しています。これにより、無限に橋がのびないようにしています。

 

mc.getBlock()による空き状況じょうきょうの確認と、length < 100の条件をandで組み合わせることで、橋の長さが100ブロックをこえず、さらに進行方向にブロックがないときだけ橋をのばすようにしています。
mc.getBlock(x + 1, y - 1, z) == 0 and length < 100

 

ブロックを置く

mc.setBlock()はマインクラフトの中にブロックを置く命令です。今回は石レンガ(IDが98)を使っています。

mc.setBlock(x + 1, y – 1, z, 98)
length += 1

ブロックを置いた後、橋の長さ(length)を1増やします。

 

東方向に1ブロック進む

x += 1

この行で、東方向に1ブロック進むための処理をしています。この操作によって、次のブロックを1ブロック先の位置に置くことができます。

 

実行してみよう!

橋を作るプログラムを実行

プログラムが完成したら「bridge.py」という名前でファイルを保存し、実行してみましょう。

プレイヤーの位置から東方向に石レンガの橋ができるはずです。

 

まとめ

空いている方向に橋をかけるプログラム

今回は、Pythonを使って橋をかけるプログラム紹介しょうかいまし

今回は東の方向に橋を作りましたが、コードを少し工夫すれば他の方向にも橋を作ることができます。ぜひ、自分だけの橋を作るプログラムにチャレンジしてみてくださいね!

 

最後にくり返し処理を行うwhile文と条件の使い方をおさらいしましょう。

while文

while 条件:
    くり返したい処理

 

比較ひかく演算子えんざんしれい

演算子 Trueになる条件
== 右辺が左辺に等しい
!= 右辺が左辺に等しくない
> 右辺が左辺未満
>= 右辺が左辺以下
< 右辺が左辺より大きい
<= 右辺が左辺以上

 

論理演算子

演算子 意味
and すべての条件がTrueのときにTrue
or どれか1つの条件がTrueであればTrue
not FalseであればTrue、TrueであればFlse

 

タイトルとURLをコピーしました