某電力会社の請求書をホームページからPDFでダウンロードした。
そしてEvernoteに保存。
と、タイトルが「Hello world (PHP)!」となった。
なぜ?
調べてみると、PHPのサンプルコードそのままらしい。
著者もサンプルのまま「Rainer Schaaf」となっている。
各電力会社の関係者の方。あなたの会社かもしれませんよ~。
某電力会社の請求書をホームページからPDFでダウンロードした。
そしてEvernoteに保存。
と、タイトルが「Hello world (PHP)!」となった。
なぜ?
調べてみると、PHPのサンプルコードそのままらしい。
著者もサンプルのまま「Rainer Schaaf」となっている。
各電力会社の関係者の方。あなたの会社かもしれませんよ~。
後は、実際にScratchからMinecraftをいじってみる。
では、サンプルからコピペしながら、Hello worldサンプルを作ってみよう。
で、出来ましたのが以下のコードです。
# coding=utf-8
from __future__ import unicode_literalsimport time
import mcpi.minecraft as minecraft
import mcpi.block as blockimport server
import sysfrom 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!」と表示されて、足元にダイヤモンド鉱石ができているはず。
さてさて、子供にプログラムに興味をもたせるための準備はできた。
だが、ここまでやると、俺の熱が冷めてきた。。。そんなんじゃダメだ!
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から実行するだけだ。
いきなりですが、次のページから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フォルダ内にコピー。
と書きながら試したが、最終的に動かず。諦める。
パソコン版のマイクラでは、ゴニョゴニョするとプログラムで遊ぶことができる。
なので、ゴニョゴニョしていく。
前提として、 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ファイルを見ながら、アイデアを練りましょう。