Scratchでキャラクターの連携をしてみた

スポンサーリンク

今日は、少しScratchを触って、
2つのキャラクタが連動して動くようなプログラムを作ってみたので紹介します。
やっている事は単純な事なのですが、イベントドリブンとオブジェクト指向がしっかりと組み込まれている事に驚きました。

スポンサーリンク

最初に

始めに実際に作ったプロジェクトを紹介します。

作ったのは単純なプログラムで…
まず、旗マークをクリックするとネコがジャンプします。
そして、ネコが着地するタイミングでクマが「ないすジャンプ!」と話します。

SampleProject_NiceJump

コードの紹介

今回のコードの全貌は下記のようになっています。

NiceJumpプログラム
NiceJumpプログラム

ジャンプの動作

ネコの動作として、旗マークが押されたら、ジャンプさせていますが、
そのジャンプは、
・ 上に10ずつ10回移動
・ 0.2秒停止
・ 下に10ずつ10回移動させる
と言う動きで実現しています。
ポイントは、一気に100移動させるのではなく、10ずつの移動を10回繰り返している所です。
少しずつ動かす事で、ジャンプしているように見せる事ができます。

ここで10移動したら、0.01秒くらい待たせた方が良いか?とも考えたのですけど、
どうやらその必要はないみたいですね。
内部的に待ち処理でも入っているのでしょうか?

オブジェクト間の連動

今回の大きなポイントは、ネコのジャンプが終わったら、クマが話すと言う所です。
Scratchでは、これを『メッセージの送信・受信』で実現させる事ができるようです。
つまり、ネコのジャンプが終わったら"メッセージ1"(ジャンプが終わったよ〜)を送り、
その"メッセージ1"(ジャンプが終わったよ〜)を受け取ったらクマが話すといった作りで実現できます。

この動きは、正にイベント駆動ですね。
キャラクター間の連動をメッセージのやり取りで実現しているのに少し驚きです。
そして、そのイベント(メッセージ)のやり取りで動きを制御させる事で、オブジェクト間の関係性を疎結合としているのですね。
これも、正にオブジェクト指向な考え方です。

これなら、複雑なスパゲティコードが生まれにくくなりますね。
(まぁ、Scratchでそこまで複雑なコードが作れるか?と言う話もありますが)
それに、メッセージを送り合うと言う仕様は、お子さんへの説明も比較的しやすいのではないか?と思います。

おわりに

今回は、キャラクターの連動のやり方を少し試してみたのですが、いかがでしょうか?
キャラ同士の掛け合いが生まれただけでも、少し面白いプログラムになったと思います。
Scratchは標準で色々なコマンドやキャラクタが用意されているので、ちょっとした操作で色々な表現ができて面白いですね。

これからもScratchを触って、色々な表現を記事にして行きたいと思います。

スポンサーリンク