Pythonから送った値をScratchで受信して遊ぶ!

Scratchアドベントカレンダーの16日目の記事です。日付を少しまたぎましたが、朝が来るまではセーフですから!

あっ、あと、こっちのアドベントカレンダーも続いてます!

Scratchとpythonをつなごう!

今日はGutHubで見つけたscratchpyというプロジェクトを使ってScratchと遊んでみます。

https://github.com/pilliq/scratchpy

インストールはMacなら簡単です。

$ easy_install scratchpy

こんだけ。

Scratchとつないでみる!

ではさっそっくScratchと接続してみましょう!

(そうそう、今回はScratch1.4でやってるんですけど、2.x系はこれできないですよね???)

まず、Sensingの中にある「Sensor」なんちゃらっていう2つのやつを持ってきて、右クリックしましょう。

そうすると、「enable remote sensor connections」というのが出るので、それをクリックしてください。

Macの場合ファイヤーウォールの警告が出ますが拒否しちゃっても大丈夫です。

これで完了です。

ターミナルで、以下のコマンドを実行してください。

$ python

そしたらこんな感じで待機状態になりますよね???

Python 2.7.8 (default, Oct 16 2014, 05:18:45) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.51)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

そしたら、以下の2つのコマンドを実行しましょう。

>>> import scratch
>>> s = scratch.Scratch()

続けてScratchの方にはこんな感じのものを置いてみましょう!

では、コマンドに戻って以下のように実行してみてください。

>>> s.broadcast("hello")

猫くんが返事をしてくれました!

これだけでは、面白く無いのでもっといろんな言葉を喋ってもらいましょう。

s.sensorupdate({'var' : '1'})

上のコマンドを実行してから、以下のようにScratchを書き換えてください。

終わったら、いろいろ喋ってもらいましょう!

s.sensorupdate({'var' : 'Wow!!'})

>>> s.sensorupdate({'var' : 'おはよう!'})

日本語はしゃべれないようです。笑

今回は、pythonからScratch上の変数に値をセットしてみましたが、s.receive()で変数を取得することもできます。

では!