前回は、当たり判定の3つのやり方についてイメージしてもらいました。
今回は、2番目の「とりあえず一歩動かしてみて」のプログラミングを体験・理解してもらいたいと思います。
さぁ、体験しながら、楽しく理解していきましょう!
目標と所要時間
目標:
時間:
とりあえず一歩動かして
プログラム仕様
まず、プログラムの仕様をおさらいしましょう。
「猫を動かして、稲妻に当たったら「痛!」と叫ぶ」
ですね。
実は、この「とりあえず一歩動かして当たり判定」するプログラムって、非常に単純です。
1.(とりあえず)一歩動かす
2.稲妻と触れたか調べる
a.触れたら「痛!」と1秒叫ぶ
プログラムはこれだけです。
あれ?この仕様なら、もうプログラム作れそうじゃない?と感じたら、すぐ作ってみて、完成したら、動きを確認してみてください!
そして、私の作ったプログラム(ページ内でリンク)と比較してみてください。
ここで一つ、重要な注意事項を。
もし、あなたやお子さんの作ったプログラムが、私のプログラムと違っていても、「猫が仕様通りに動いて」いれば、まったく問題はありません。
むしろ、あなたのプログラミング能力がすごく向上した!と自信をもってください!
もし、お子さんが作れたなら、「すごいぃ!!!!」と最上級の驚きをもって、最高に褒めてあげてください。
とりあえず一歩進める
まず最初、「とりあえず猫を一歩動かす」プログラムを作成しましょう。
稲妻スプライトを追加して、猫を左右に動かすようにしてください。忘れてしまってたら、xxxを見ながら作ってください。
当たり判定
次は、当たり判定です。
左右にキーを押して動いた後に、触れたかどうか調べるわけですから、使うブロックはなんでしょう?
そう、「もし<>なら」ブロックと「○○に触れたら」ブロックの2つが必要です。
で、「もし<>なら」ブロックを配置するわけですが、このブロックには、「コの字の逆」の形と「E」の形と2種類あります。
どちらを使えばいいかを判断するためには、当たったときの仕様を確認します。仕様は、
2.稲妻と触れたか調べる
a.触れたら「痛!」と1秒叫ぶ
です。当たらなかった(触れなかった)ときの動作がありませんね。(「もし<>なら」の使い方記事は作成中。)
なので、今回は、「コの字の逆」を使います。
このブロックを、「10歩進む」の下につなげてください。
「○○に触れたら」
「もし<>なら」をつなげることができたら、次は「○○に触れたら」ブロックです。
「制御」をクリックして水色ブロックを表示し、一番上の「マウスポインタ―▼が触れた」ブロックを「< >」の間にすぽっと入れてください。
そして、稲妻と当たったかを調べるために、▼を押して、「Lightning」を選んでください。
これで、当たり判定はできました。
「痛!」と叫ぶ
つぎに、「触れた(当たった)とき」の動きをプログラムします。
「痛!」と1秒叫ぶので、「見た目」の中から「Hellow!と2秒言う」をコの字の間に入れてください。
そして、「痛!と1秒言う」に変更してください。
さぁ、これで右に移動したときのプログラミングは完成です。
仕様通りに、稲妻に当たったら「痛!」と叫ぶか、確認してみましょう!
左向きもプログラミング
右向きのプログラミングが仕様通りにできたら、次に左向きに動くときです。
さっきと同じように「もし<>なら」ブロックを配置して…とやるのももちろんいいです。
特に、まだScratchの操作や、プログラミングに慣れていないときには、練習のためにも一つずつブロックを配置してください。
一方、もう慣れたよ!という方は、丸々コピーして楽ちんしましょう。
やり方は、ブロックが多くても大丈夫!ブロックのコピーを使いこなそうでも説明していますが、「10歩動かす」ブロックの下の「もし<>なら」ブロックにポインターを合わせて、「右」クリックします。
「複製」、「削除」といったリストが表示されるので、「複製」を選んでください。
すると、写真のように、コピーしたいブロック群が新たに表示されます。
ポインターを下に動かすと、新たに現れたブロック群も一緒に動くので、左キーを押したときに「-10歩動かす」ブロックの下につなげてください。
そうしたら、左右に動かしてみてください。左に動かしたときも、「痛!」と叫んだでしょうか?
表示されたら、プログラミングは完成です!
これが、「とりあえず一歩動かして」当たり判定するプログラムです。
「通過できない」ように改造
さて、当たり判定プログラムは完成しましたが、このプログラムでは、猫は「痛!」と叫びながらも、稲妻を突っ切ることができます。
しかし、稲妻に当たりながらも突き進んでいけるのは…とか、障害物が壁とかだと猫が壁にめり込ませないようにしたいときもあります。
そこで、このプログラムを変更(改造)して、猫が稲妻の中を通過できないようにしましょう。
どのように改造すれば良いと思いますか?
正解の一つは、最初に動かした方向と逆の方向へ一歩動かしてあげればいいんです。
猫がびっくりして、後ろに飛び上がって逃げるイメージでしょうか?
「反対方向」はどの方向かというと、最初に「10歩」動かしているので、反対方向は「-10歩」になります。
そこで、「反対方向へ一歩動かす」ために、「-10歩動かす」ブロックを追加してみましょう。
さぁ、突き進めないようになったか、確認してみましょう!
どうでしょうか?
「絶対めり込まない」ように改造
さて、もう一度考えてみましょう。
稲妻の場合は、「痛!」と叫んでから後ろに一歩下がっても、問題ありません。
でも、壁相手だと、「一度壁にめり込んで」から後ろに下がるのは少々おかしいですよね?
壁が相手なら、絶対にめり込まないようにする必要があります。
それじゃ、さっきのプログラムをどのように変更すればいいと思いますか?
答えは結構簡単で、
先に「後ろに下げて」から、後で「痛!」と叫ぶようにすればいいんです。
たったこれだけです。
それじゃぁ、一緒に変更してみましょう。出来上がりは、こんな感じです。
変更が終わったら、実際に動かしてみてください。どうですか?