
Minecraft Pi Editionで遊びながらプログラミングの勉強!
今回はRaspberry Pi 2 Model B(RASPBIAN)で、プログラミング言語Pythonを使って「Minecraft Pi Edition」の世界をプログラミングします。
Minecraft Pi Editionとは
Raspberry Pi専用のMinecraft
小学生の間でも流行っているというMinecraft。
YouTubeにも大量にプレイ動画がアップロードされており、TVのおはスタでもMinecraftコーナーがあるそうです。
ゲームの内容は、立方体ブロックで構成された世界で、プレイヤーがブロックを壊したり、配置したり、集めたブロックを組み合わせて道具を作り出したりしながら、箱庭世界での生活を楽しむものです。
以前紹介したMathematicaと同じく、Minecraftも有償のソフトウェアですが、Raspberry Pi向けに専用の無償版としてMinecraft Pi Edition(以下、Minecraft Pi)が提供されています。
通常版とMinecraft Piの違い
Minecraft Piは、クリエイティブモードでのみ遊ぶことができます。
パソコンやゲーム機用のMinecraftにあるようなサバイバルモードのような他のモードで遊ぶことはできません。
遊べるモードは一つだけですが、Minecraft Piだけの最大の特徴がプログラムとの連動です。
Raspberry Piに初めから入っているプログラミング言語Pythonを使うことで、Minecraft Piの世界をコントロールすることができるんです!
さっそく試してみる
まずは文字の表示
プログラミングの第一歩はいつもHello Worldから、ということでMinecraft Piの世界に挨拶してみましょう。
まずは、Minecraft Piを起動し、Start GameからCreate newを選んで、新しい世界に入ります。
このときマウスを動かすとゲームの中の視線が移動しますが、キーボードのTABキーを押すことで、マウスカーソルが動かせるようになるので、MenuのProgrammingからPython 2を起動します。
Python Shellの画面が表示されるので、以下のプログラムを入力すると・・・
Hello World表示
1 2 3 4 5 |
from mcpi import minecraft mc = minecraft.Minecraft.create() mc.postToChat("Hello World") |
見事「Hello World」が表示されました。
すこし複雑なプログラムを作ってみる
まずは簡単なメッセージ表示に成功したので、今度はすこし複雑なプログラムに挑戦します。
今回試すのは、以下の3つです。
- 地形のブロックを削除して平面を作る
- プレイヤーの位置を検知する
- ブロックを使って文字を書く
Minecraft Piの世界には、山や谷の地形があるので、まず平地を作るために地形ブロックを削除します。
平地作成
1 2 3 4 5 6 7 8 9 |
from mcpi import minecraft mc = minecraft.Minecraft.create() # 左上が(-60,-60)、右下が(60,60)の四角い面の高さ―1から30までの範囲を空気ブロックで埋める mc.setBlocks(-60,-1,-60,60,30,60,0) # 左上が(-60,-60)、右下が(60,60)の四角い面の高さ―1から1までの範囲を石ブロックで埋める mc.setBlocks(-60,-1,-60,60,0,60,1) |
次にプレイヤーの位置を検知してみます。
プレイヤーの位置検知
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from mcpi import minecraft from time import sleep<br> mc = minecraft.Minecraft.create() sw=False # プレイヤーが(0,20)の位置に来るまで繰り返し while not(sw): x1,y1,z1 = mc.player.getTilePos() if(x1==0): if(z1==20): sw=True else: sleep(0.5) else: sleep(0.5) mc.postToChat("Hello Player") |
最後に、平地作成とプレイヤーの位置検知を組み合わせて、平地上でプレイヤーが特定の位置に立つと、ブロックで文字を組み上げるというプログラムを作ってみます。
ダイヤのブロックの場所に立つと、ダイヤのブロックで文字を組み上げる
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 |
from mcpi import minecraft mc=minecraft.Minecraft.create() data=[ ' ##### #### # # #### ## ##### #', ' # # # ## # # # # # # # #', ' # # # # # # # # # # # #', ' # # # # # # # ### ###### ##### #', ' # # # # ## # # # # # # #', ' # #### # # #### # # # # #', ] if __name__ == '__main__': mc.postToChat("HELLO") x=-30 z=-10 # 平地作成 mc.setBlocks(-60,-1,-60,60,30,60,0) mc.setBlocks(-60,-1,-60,60,0,60,1) mc.setBlock(0,0,20,57) # プレイヤーの位置検知 sw=False while not(sw): x1,y1,z1 = mc.player.getTilePos() if(x1==0): if(z1==20): sw=True else: sleep(0.5) else: sleep(0.5) # 文字の組み上げ for line in data: for ch in line: if ch=='#': for y in range(1,10): mc.setBlock(x,y,z,57) mc.setBlock(x,y,z+1,57) x=x+1 z=z+2 x=-30 |
Minecraft Piの世界に巨大なダイヤモンド文字が出現!
なにが書いてあるか読めるかな?答えはムービーでチェック!
ムービーで紹介!
今回作ったプログラムを動かした様子をムービーで紹介します。
次回は…
Raspberry Piをパワーアップ?!Raspberry Piに周辺機器をつなげてみます!
この記事のおかげで無事できました!
これ。凄くjavaアプレットみたいですね(^-^)
コメントありがとうございます。
最近ではJavaといえばAndroidアプリのイメージですが、
Javaアプレット・・・ずいぶん懐かしいですね。
次はRaspberryPi専用カメラをつないで遊んでみようと思っていますので、また見に来てください!
Pingback: Minecraft PiをPythonで遊ぶ | Beanlog