同じ命令を繰り返し何度も実行する場合、Python の for という繰り返し命令のプログラムを使うと便利です。
たとえば階段を作るプログラムは、1段ずつ何度も床ブロックを作るプログラムが繰り返されますよね。そんな時に便利な、繰り返し命令の for をつかって、階段を作るマイクラPythonプログラミングについての解説をしてゆきましょう。
この記事では、繰り返し命令を「使わない場合」と「使った場合」の2パターンのプログラムの書き方を紹介していますので、マインクラフトの世界に階段を作るPythonプログラムの例を見てゆきましょう。
繰り返し命令を使わない場合
setBlocks で1段ずつ階段を作るPythonプログラムの例を見てみましょう。
実際のプログラミング例はこちら。
ご自身の環境で動かしてみたい場合は、以下の場所に保存してください。
ファイルパス(Macの場合)
/Users/ユーザ名/Library/Application Support/minecraft/mcpipy/step.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 |
# coding: UTF-8 # 上のコードを書くことで、日本語のコメントを有効にします # マインクラフト用のプログラムを読み込みます from mine import * # マインクラフト用のプログラムを、すぐに使えるように「mc」として準備します mc = Minecraft() # チャットメッセージを出力します mc.postToChat("step.py の処理を開始します") # 自分の位置情報を取得します # 取得してきた位置情報は、それぞれ変数 x, y, z に保存されます x,y,z = mc.player.getPos() # ブロックの種類を設定します block_number = 41 # 金色ブロックの番号を指定 # 階段を作ります # 1段め mc.setBlocks(x, y, z, x, y, z+2, block_number) # 2段め mc.setBlocks(x+1, y+1, z, x+1, y+1, z+2, block_number) # 3段め mc.setBlocks(x+2, y+2, z, x+2, y+2, z+2, block_number) # 4段め mc.setBlocks(x+3, y+3, z, x+3, y+3, z+2, block_number) # 5段め mc.setBlocks(x+4, y+4, z, x+4, y+4, z+2, block_number) # 段を作る命令の補足 # mc.setBlocks(東西の座標(始点), 上下の座標(始点), 南北の座標(始点), 東西の座標(終点), 上下の座標(終点), 南北の座標(終点), ブロックの種類) mc.postToChat("実行終了です”) |
マインクラフトの setBlocks の命令は複数のブロックを1回のコードで設置できる便利な命令でしたよね。
ブロックを設置する方法は以下のページで詳しく解説していますので、こちらも参考にしてみてください。
そして setBlocks のカッコ内では、階段を1段つくるごとに東西の座標「x」と上下の座標「y」を足してゆきます。
こうすることで、マインクラフトの画面内には、東方向に斜めに上がってゆく階段が作られてゆくわけです。
そして上記のプログラムを実行すると、5段の階段をつくることができました。
もっと多くの階段を作る場合
では、もし100段の階段を作ろうとした場合は、どのようなPythonプログラムになるでしょうか?
上のプログラムのように、「6段め」「7段め」「8段め」…「99段め」「100段め」(ハァハァ…汗)とプログラミングすることもできますが、「繰り返し命令」を使うことでもっと楽に多くの階段をつくることができます。
繰り返し命令を使う場合
「指定した場所に1段の階段を作る」というプログラムを繰り返しおこないたい場合は、for という繰り返し命令のPythonプログラムを使うと簡単に実現することができます。
ご自身の環境で動かしてみたい場合は、以下の場所に保存してください。
ファイルパス(Macの場合)
/Users/ユーザ名/Library/Application Support/minecraft/mcpipy/step2.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 43 44 45 46 47 48 |
# coding: UTF-8 # 上のコードを書くことで、日本語のコメントを有効にします # マインクラフト用のプログラムを読み込みます from mine import * # マインクラフト用のプログラムを、すぐに使えるように「mc」として準備します mc = Minecraft() # チャットメッセージを出力します mc.postToChat("step2.py の処理を開始します") # 自分の位置情報を取得します # 取得してきた位置情報は、それぞれ変数 x, y, z に保存されます x,y,z = mc.player.getPos() # ブロックの種類を設定します block_number = 41 # 金色ブロックの番号を指定 # 階段の段数を設定します step_number = 100 # 階段の幅を設定します step_width = 5 # 階段の幅が1個多く作られてしまうので、ここで調整 step_width = step_width - 1 # 繰り返し命令を実行します # 繰り返す回数は step_number で指定した数ぶん for i in range(step_number): # i には何回めの繰り返し回数かが記録されています # ただし i はゼロから開始されるので、チャットメッセージには i+1 の値を出力します mc.postToChat(str(i+1) + "段めの階段を作ります") # i 段めの階段を作ります mc.setBlocks(x+i, y+i, z, x+i, y+i, z+step_width, block_number) # 段を作る命令のコメント # mc.setBlocks(東西の座標(始点), 上下の座標(始点), 南北の座標(始点), 東西の座標(終点), 上下の座標(終点), 南北の座標(終点), ブロックの種類) # 繰り返し命令はここで終了です # 繰り返し命令から抜け出すと、以下の実行が始まります mc.postToChat("階段を" + str(i+1) + "段作りました") mc.postToChat("実行終了です") |
できるだけ短いPythonプログラミングで、雲まで突き抜ける100段の階段をマインクラフトの世界に作ることができました。
単純な作業をくりかえし実行したい場合は、for の繰り返し命令を使うことで簡単に実現することができるんですね。
この for を使った繰り返し命令を応用し、
- まっすぐに道を作ってみる
- 階段や道の最後にプレーやをテレポートさせる
などに改造してみても面白いかもしれませんね。
テレポートの方法はこちらのページで解説していますので、ぜひチャレンジしてみてください。
今回作った100段の階段を遠くから見てみると…