マイクラでプログラミング(Scratch2.0編)後編

Scratch2とPythonが接続できた

後は、実際にScratchからMinecraftをいじってみる。

では、サンプルからコピペしながら、Hello worldサンプルを作ってみよう。

で、出来ましたのが以下のコードです。

# coding=utf-8
from __future__ import unicode_literals

import time

import mcpi.minecraft as minecraft
import mcpi.block as block

import server
import sys

from blockext import *
class HelloMinecraft:

def _problem(self):
if time.time() % 8 > 4:
return “The Scratch Sensor board is not connected. Minecraft.”

def _on_reset(self):
print(“””
Reset! The red stop button has been clicked.
“””)

@command(“Say Hello %s”)
def say_hello(self, text=”Minecraft”):
mc.postToChat(“Hello %s!” % (text))
playerPos = mc.player.getPos()
mc.setBlock(playerPos.x,playerPos.y-1,playerPos.z,block.DIAMOND_ORE)
extension = Extension(HelloMinecraft, descriptor)

mc = minecraft.Minecraft()

if __name__ == “__main__”:
extension.run_forever(debug=True)

上のコードをHelloMinecraft.pyとしてファイルで保存。

マイクラで適当な世界を開いておいて、HelloMinecraft.pyを実行。

Webブラウザでlocalhost:1234を開いて、Scratch Minecraft Test English.s2eをダウンロード。

Scratch2.0を実行して、[Shift]キーを押しながらメニューの「File」を開いて、「Import Experimental Extension」を選択。
今、ダウンロードしたs2eファイルを開く。

「More Blocks」からブロックを追加して、ブロックにMinecraftと入力。

そして、実行!

マイクラの画面に、「Hello Minecraft!」と表示されて、足元にダイヤモンド鉱石ができているはず。

さてさて、子供にプログラムに興味をもたせるための準備はできた。

だが、ここまでやると、俺の熱が冷めてきた。。。そんなんじゃダメだ!

マイクラでプログラミング(Scratch2.0編)前編

Windows上で、Pythonからマイクラの制御はできている前提。

そして、Scratch2.0をインストールしておく。

次のページから「Adobe AIR」と「Scratch Offline Editor」をインストール。

https://scratch.mit.edu/scratch2download/

Scratchのwikiで、Pythonに関するページを参照。

blockextというPythonのライブラリを使えば、Scratch2.0のブロックを作って連携できるみたい。

次のzipファイルをダウンロードして解凍。

https://github.com/blockext/blockext/archive/master.zip

blockext-masterフォルダにカレントディレクトリを移して、「setup.py install」と実行し、ライブラリをインストール。

blockext-master>setup.py install

エラーメッセージっぽい物が出なけりゃ大丈夫。

でも、一応確かめる。「python」と入力して、Pythonのインタプリタを起動し、「import blockext」と入力。

blockext-master>python
Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.
>>> import blockext
>>>

何も表示されないってことは、大丈夫ってこと。

「exit()」か[Ctrl]+[z]を入力してReturnキーで、終了。

Use exit() or Ctrl-Z plus Return to exit
>>> ^Z

では、サンプルを使ってスクラッチ用の拡張ブロックを作ってみよう。

解凍したblockext-masterフォルダ内のexample.pyを実行。

blockext-master>example.py
Listening on localhost:1234

すると、localhost:1234と、ポートが開かれたとのメッセージが表示される。

webブラウザから、localhost:1234を開く。

リンクが2つ表示される。今回はScratch2用の拡張ファイルがほしいので、上側のリンクを開いて、「Scratch Fancy Spaceship English.s2e」をダウンロード。

コマンドラインには、以下の様なログが表示されている。

127.0.0.1 – – [07/Jun/2017 19:13:58] “GET / HTTP/1.1” 200 –
127.0.0.1 – – [07/Jun/2017 19:14:15] “GET /_generate_blocks/scratch HTTP/1.1” 302 –
127.0.0.1 – – [07/Jun/2017 19:14:15] “GET /_generate_blocks/scratch/en/Scratch%20Fancy%20Spaceship%20English.s2e HTTP/1.1” 200 –

では、続いてScratch2.0を起動して、[Shift]キーを押しながらメニューの「File」を開いて、「Import Experimental Extension」を選択。
今、ダウンロードしたs2eファイルを開く。

「More Blocks」を選択すると、拡張ブロックが表示されているはず。

だが、この画像では「Fancy Spaceship」の右に赤丸が表示されている。

これはPythonのライブラリと接続されていないということ。

何故か?それは、[Ctrl]+[c]キーでプログラムを停止してしまっていたから。

プログラムは停止させないで、Scratch2で簡単なプログラムを作って実行してみる。

変数fooに文字列「ABC」を入れて、5秒間Say!

127.0.0.1 – – [07/Jun/2017 20:33:31] “GET /reset_all HTTP/1.1” 200 –
127.0.0.1 – – [07/Jun/2017 20:33:31] “GET /set_foo/ABC HTTP/1.1” 200 –
ABC
127.0.0.1 – – [07/Jun/2017 20:33:36] “GET /say_for_secs/19/ABC/5 HTTP/1.1” 200 –

よし。動いた。

ここまで行けば、後はマイクラを制御するためのブロックを作ってScratchから実行するだけだ。

マイクラでプログラミング(Scratch失敗編)

いきなりですが、次のページからAdobe AIRとScratchをインストール。

と、書いてから作業を進めていったのですが、どうも最新の2.0ではMinecraftとの連携ができない。

https://scratch.mit.edu/scratch2download/

なので、次のページから1.4をインストール。

https://scratch.mit.edu/scratch_1.4/

※と、書いてましたが、Scratch2.0でもマイクラと連携できるよ。

インストールしたら起動して次からダウンロードしたサンプルプロジェクトをダウンロードして開いてみる。

「遠隔センサーが有効になりました。」と表示されればScratch側の準備はOKでしょう。

ただ、Windowsのファイヤウォールが何か聞いてくるかもしれません。

続いてScratch2MCPIをインストールする。

http://scratch2mcpi.github.io/

ここではcurlという仕組みを使ってインストールする方法が書かれている。が、Windowsなので、今回は手動で入れていく。

まずはscratch2mcpiのzipファイルをダウンロード。解凍してできたscratch2mcpi-masterフォルダを、scratch2mcpiに改名。

https://github.com/scratch2mcpi/scratch2mcpi/archive/master.zip

scratch2mcpiフォルダを次のmodsフォルダ内にコピー。

D:\Users\[ユーザ名]\AppData\Roaming\.minecraft\mods

次のフォルダをscratch2mcpiフォルダ内にコピー。

D:\Users\[ユーザ名]\AppData\Roaming\.minecraft\mcpipy\mcpi

次にMinecraft Graphics Turtleをインストール。

次のzipファイルをダウンロード。解凍してできたminecraft-turtle-masterフォルダを、mcturtleに改名。

https://github.com/scratch2mcpi/minecraft-turtle/archive/master.zip

mcturtleフォルダを先ほどのscratch2mcpiフォルダ内にコピー。

次にMinecraft Stuffをインストール。

次のzipファイルをダウンロード。解凍してできたminecraft-stuff-masterフォルダを、mcstuffに改名。

https://github.com/scratch2mcpi/minecraft-stuff/archive/master.zip

mcstuffフォルダを同じくscratch2mcpiフォルダ内にコピー。

次のzipファイルをダウンロード。解凍してできたscratchpy-masterフォルダを、scratchpyに改名。

https://github.com/pilliq/scratchpy/archive/master.zip

scratchpy/scratchフォルダ内のscratch.pyを、同じくscratch2mcpiフォルダ内にコピー。

と書きながら試したが、最終的に動かず。諦める。

マイクラでプログラミング(Python編)

パソコン版のマイクラでは、ゴニョゴニョするとプログラムで遊ぶことができる。

なので、ゴニョゴニョしていく。

前提として、 WindowsにMINECRAFTがインストールされている事。
他のOSでも可能だが、とりあえずWindowsで。

まずは、プログラミング以前に、ゲームにMODを入れるためのソフトを入れる。ちなみにMODとはModificationの略。

次のページから「Download Recommended」の「Installer-win」をダウンロードしてインストール。

http://files.minecraftforge.net/

インストール中に選択画面が出てくるが、デフォルトの「Install client」でOK。

インストールが終わると、マイクラのランチャーには最新バージョン以外に、forgeのスタート項目が出てくる。

forgeを選択して「プレイ」すると、「Mods」というボタンが表示されている。

Open 2.0が必要とか言ってるが、これは自分のPCのグラフィック処理能力が低すぎるため。
グラフィックボード買いたい。でも、金ない。誰かPCI Express X16のボードください。
と言うか、PC自体が古すぎだな。

続いてPython自体を次のページからダウンロードしてインストール。

https://www.python.org/downloads/windows/

1点、インストーラの最初のページで、「Add Python 3.6 to PATH」のチェックを入れる。

コマンドプロンプトで次のコマンドを実行してインストールされたことを確認。

>python -V
Python 3.6.1

次に、Pythonを動かすためのMODを入れる。次のページから、mods.zipをダウンロードする。
ついでにpython-scripts.zipもダウンロードしておく。

https://github.com/arpruss/raspberryjammod/releases

mods.zipの中の、使っているマイクラのバージョンと同じ名前のフォルダから、RaspberryJamMod.jarを解凍して、以下のフォルダにコピーする。

C:\Users\[ユーザ名]\AppData\Roaming\.minecraft\mods\

マイクラを起動して、forgeのプロファイルで起動すると、MODSの中に「Raspberry Jam Mod」が追加されている。

先ほどダウンロードしておいたpython-scripts.zipを展開し、mcpipyフォルダを以下のフォルダに入れる。

C:\Users\[ユーザ名]\AppData\Roaming\.minecraft\

おもむろに新しい世界を作って、マイクラ上で以下のコマンドを入力。

/py helloworld

画面に「Hello world!」と表示されて、足元にダイヤモンド鉱石が出現していたら成功です。

後は、mcpipyフォルダのpyファイルを見ながら、アイデアを練りましょう。

マイクラを始めた2

そう。我が家を壊す奴。それは、

クリーパー

近づくと、点滅して自爆する。

近くのプレーヤーも、ゾンビも、ブロックも一気に吹き飛ばしてしまう。

スタート地点から長い道のりのあとに爆破されて殺されると、もうやる気が半減。

死んでしまうと持っていたアイテムはその場所にばらまかれた状態になる。
取り戻しに向かうが、うろちょろした後には、元の場所に戻れなかったりする。
戻るのが遅すぎると、それらのアイテムは消えてしまっている。

初心者としては、スタート地点に拠点を作るのが良いのか。

さて、ウロウロすることに飽きたら、道具を作ってみる。

木を切り倒すには斧
土を掘るにはスコップ
岩を掘るにはつるはし
敵を倒すには剣

木→木材→棒と加工して、木材と棒で木の道具を作る。
工作台で丸石と合わせて石の道具を作る。

加工は、持ち物表示、工作、装備を表示する画面から行う。画面右下「・・・」から開く。

工作台は、木材をいっぱい使って作る。
工作台でないと作れない物がほとんどなので、まずは1つ作ってしまおう。

そして、木の道具の次は鉄の道具。

鉄は掘り進んでいくと鉄鉱石があるので、かまどで燃やして生成させる。
燃やすための燃料は、燃えるものならなんでもOK。掘って見つけた石炭が最適だ。

そして、道具を駆使し、資源を増やして色々する。

そしてそして、最後は、エンダードラゴンを倒す。
これが最終目的。。。とすることもできる。

なんだよ!エンダードラゴンって?となるが、最初はそういうことを考えずに慣れるのがよいのではなかろうか。