佐野ベースレッスン風景【Scratchプログラミング】ピンポンゲームを改造しよう

今回はスクラッチ(Scratch)を使ったレッスンの様子をご紹介いたします!
この日のレッスンでは「ピンポンゲーム」の改造をしました。
スタートボタンを押してゲームを開始させ、マウスのポインタでパドルを動かし、ボールをはね返していくゲームです。
ピンポンゲームの作成例については、Scratchの公式サイトにチュートリアルも掲載されているので、こちらも参考にしてみてもよいですね。
以前のレッスンで、
①好きな背景の絵とボールの絵(スプライト)、そしてボールを打ち返すためのパドルを設定
②パドルを動かすプログラムを作る
③ボールがぶつかったらゲームオーバーとなる赤いラインのスプライトを追加
④ゲームオーバーの画面を作る
⑤ボールが赤いラインにぶつかったらゲームオーバーとなるプログラムを追加する
……というところまでは大体完成していましたので、さらに改造をしてみます。
条件分岐「もし○○ならば××する」
さて、改造に入る前に、プログラムの内容についても触れていきます。
「もし○○ならば、××する」といった関係が成り立つ処理をプログラム上で表すことを、一般的に「条件分岐」と呼びます。
わたしたちの日常生活でも条件分岐はたくさん存在していて、
「もし雨ならば、傘をさす」のように、もし一定の条件を満たしたら、ある処理を行うということがありますね。
プログラミングの世界においても、「もし条件を満たしたら、ブロック内の処理を行う」ということができます。
ピンポンゲームの「ボール」に設定したプログラムでも、もしボールがパドルに触れたらボールが斜めに跳ね返るように角度を変えたり、

もしボールが赤い線に触れたらゲームオーバーになるような処理を設定したり…

こういった「もし○○ならば××する」というのが条件分岐の最も単純なパターンですが、
「もし○○ならば××する。そうでなくもし□□ならば◇◇する。どちらでもない場合は△△する」というように複数の条件によって細かく処理を分岐させていく場合もあります。
日常生活でも「もしごはんがあったらごはんを食べる。もしごはんがなくてパンがある場合はパンを食べる。どちらもない場合は麺類にしようかな?」みたいなことがありますね。
条件が増えれば増えるほどプログラムの内容も複雑になっていくので、それぞれの条件において意図した動きをさせるために、よく考えてプログラム作りをすることが必要になります。
「角度」や「向き」について
Scratchでは、一番上の向きを0度として、右を90度、下を180度、左を -90度(マイナス90度)として向きが設定されています。

Scratchのサイトを開くと、はじめはスプライトのネコが90度の方向(右)を向いていますね。
入力欄の数値を変えると、ネコを指定した方向に向けることができます。



このようにスプライト(キャラクターや絵など)を、決まった方向(向き)を向かせたい!というとき、scratchのプログラムでは「~どにむける(~度に向ける)」というプログラムブロックを使って命令をすることができます。

ピンポンゲームのプログラムの中でも、ボールの進行方向を最初に設定するところで、この「~度に向ける」ブロックを使っています。

このあたりの角度に関する内容は、生徒さんたちには教材テキストの問題を解いて答え合わせをしながら理解を深めてもらいました。
ピンポンゲームの専用コントローラーを作って動かそう
それでは、すでに出来上がっている「パドルを動かすプログラム」について、ここで手を加えて改造をしてもらいます。元々のプログラムは、このように

ボールがずっとマウスの左右の動きに追従して動き続けるように、パドルのX座標(左右方向)の位置を、マウスのポインタの場所に移動させるというプログラムを入れていました。
これを、WeDo2.0のセンサーを使って、オリジナルの専用コントローラーを作って動かせるようにします。今回は傾きを判定してくれる「チルトセンサー」を使います。
これを、条件分岐「もし~なら」のブロックを使って、
「もしセンサーが右に傾いたら、パドルを右に動かす」
「もしセンサーが左に傾いたら、パドルを左に動かす」
という処理になるように変えてみます!

WeDo2.0とScratchを接続して、プログラムを作って動かしてみます。
うまくボールを跳ね返すことはできるかな? 動かしながら試してもらいます。



まずはセンサーを傾けると座標を10ずつ変わるようにしてみましたが、数字も好きなように変えて試してもらいました。数字が変わると、パドルの移動する速さが変わりますね~
この日のレッスンではここで終了!となってしまいましたが、他にも距離を判定するセンサー「モーションセンサー」を取り入れてみたり、コントローラー自体をかっこよく改造してみても楽しそうですね。
おわりに
プログラミングに限らず、ものづくり全般に言えることかもしれませんが、
「自分なりに作品を改造してみましょう!」と言われてもアイデアが浮かばない……
やりたいことが思いつかない……
やりたいことがあるけどやりかたがわからない……といったことはたくさんあると思いますが、
まずは自分なりの考えを試してみたり、基本的な知識をおさらいして理解しなおしたり、
テキストに書かれているヒントやアイデアを参考にしたり……といった、ふだんのレッスンでやっていることが、生徒さんたちにとって突破口になったらいいなあ、と願う次第です^^
********************
ロボット・プログラミング教室ロボテックでは、子どもたちが興味を持つブロックという教材を通じて、強要されることなく自然な流れで課題を解決し、それを発表する、さらには他の人の意見に耳を傾けるという力を育んでいきます。
ロボテックでは、ロボットづくり・マインクラフトでゲームづくり の無料体験を行っております。
お気軽にお申し込みください!
無料体験のお申込みはこちら