プログラミング入門

プログラミング初心者のためのScratch(スクラッチ)入門-動き編(2)

プログラミング初心者の子供に何を教えたらいいの?とお悩みの保護者のためのScratch(スクラッチ)の入門講座。Scratchで猫の動かし方はわかったけど・・・次にどんなことをしたらいいの?という疑問にお答えするシリーズです。
今回は「動き」の実践編をお届けします。

対象は小学校高学年のお子さん向けになっています。小学校低学年のお子さんは、保護者がまず作り、お子さんがプログラムを改造するという方法がおすすめです。
 

1. 難しい動きをScratchで作ろう

前回の記事「動き」基礎編で取り扱った、キーで動かす方法、マウスで動かす方法はわかりましたか?
今回はちょっと難しい動きにチャレンジ!一つは高校数学レベルですが簡単にできます。頑張りましょう。
 

1-1. Scratchで重力を表現してみよう

FlappyBirdというゲームがあります。スペースキーを連打すると鳥が羽ばたいて飛びますが、何もしていないと地面に落ちてきます。つまりゲームの画面内に「重力」があるように見えるんです。

Scratchでもこの重力を表現することができますよ。

▼サンプルプログラム
https://scratch.mit.edu/projects/210186318/

 
重力の表現はたったこれだけ。
ただずっと下に下がる、というプログラムを作るだけです。
鳥とビルと木の動きを組み合わせることで、まるでそこに重力が存在しているように見えますよ。

「簡単なプログラムの一体何が難しいの?」と思われるかもしれません。
それは「重力」をScratchでどう表現するか、言葉を変換するところ。
 
重力

勝手に下に動く

ずっとy座標をマイナスし続ける
 
という変換が必要です。大人なら一瞬でわかる人もいるかもしれません。また、解説すれば納得するかもしれませんね。ですが、子供には結構難しい作業なんです。説明してもなかなか伝わらないことも・・・・こういうところがScratchの難しさだと思います。
 

さて、プログラミングの話に戻りましょう。
今度は、FlappyBirdのゲームのように何かボタンを押すと、鳥が重力に逆らって飛ぶようにしたいと思います。
スペースキーを押すと鳥が上に動くようにするは、次のプログラムで表現します。

 
鳥が羽ばたいているように見えるプログラムは次のようにします。この鳥のスプライトは翼の向きが違うコスチュームを持っているので、コスチュームを交互に変えることで羽ばたいているように見せることができます。「重力」と「鳥が飛ぶ」のプログラムとは別に用意しています。

 
羽ばたかせる見た目のプログラムは、「重力」「鳥が飛ぶ」の動きのプログラムとは別に用意しています。

なぜ別に分けているかというと、「0.5秒待つ」を使いたいからです。重力のプログラムに「0.5秒待つ」を入れてしまうと、重力っぽくなりません。気になる方は試してみてくださいね。
 

[ポイント]
・変数を使って、ビルにぶつかった回数を数えるようにしています。
・ゲームオーバーの時に、鳥がひっくり返るようにして”残念な感じ”を表現しています。

 

やってみよう
・重力を大きく(強く?)してみよう。
・ビルが出現する間隔を短くしてみよう。

 

1-2. Scratchの三角関数でゆらゆらする動きを作ろう

波打つように敵が上下に揺れるという動きは、ゲームの王道。
シューティングゲームやよけゲーなど様々なゲームで使えます。
 
実はこれらは「三角関数」を使っているんです。
「三角関数」と聞くとなんだか頭が痛くなりそうですが、大丈夫!お手本通りに作ってみましょう。
 
 
さて、三角関数といえばsin(サイン)、cos(コサイン)、tan(タンジェント)です。
まずは、基本的なy=sinxという式をScratchで表現してみましょう。

最初にスプライトを画面の左端にセットして、それ以降はy=sinxを描くようにしています。
その結果・・・・

※動きの軌跡がわかるようにScratchの「ペン」を使っています。
 
あれ?なんだか全然うごいていませんね。y座標の値が小さすぎるようです。
そこで、次のようにy座標の値を60倍にしてみました。

すると・・・

※動きの軌跡がわかるようにScratchの「ペン」を使っています。
 
はい、ちゃんとゆらゆら動いて敵キャラっぽくなりました。

やってみよう
・サインカーブのy座標を60倍を100倍に変えてみよう。
・コサインカーブを描いてみよう。

 
▼制作例はこちら
https://scratch.mit.edu/projects/210377352/

まとめ

いろいろな動きをご紹介しました。これで、動きの表現の幅が広がると思います。

こんなことに挑戦してみましょう!
・避けゲーで敵キャラの動きを三角関数にしてみる。
・2次元のアクションゲーム(スーパーマリオ)を重力を使って表現してみる。

動きを使って、自分の作品をさらにグレードアップしてみてくださいね。

伴野悠佳 / YUKA TOMONO
この記事の著者伴野悠佳 / YUKA TOMONO
教育ヲタクの1児の母。自称ニコニコキッズクリエーター。東京理科大学大学院卒。元SE。小学生の頃から教育書を読んでいた教育ヲタク。大学では、電池の素材の性質について実験とコンピューターシミュレーションを比較する研究を行っていたことがきっかけでSEになる。出産&育休後、子ども向けプログラミング教室講師、子どもたちの考える力を育てるオンライン塾の講師。