この「監視員」型の当たり判定プログラムは、プログラムを作るために必要な情報、例えば「きっかけ」とか「ずっと」などの使い方が詰まっています。
読むだけでは一度では理解できないかもしれません。
この記事で紹介しているプログラムを一緒に作って、動かして、体験してみてください。そうしたら、感じはつかめると思います。
そして、お子さんに説明してみてください。羨望のまなざしになるかもです。
目標と所要時間
目標:「監視員」型当たり判定プログラムが作れるようになる
時間:15分
「監視員」型の当たり判定
長所
この「監視員」方法の長所は、
a.移動方向が複数でも1ブロックで判定できる
b.相手からぶつかってきても判定できる
具体的に説明すると、「事前に調べる」と「とりあえず動く」方法だと、「キーが押されたとき」のブロックひとつずつにぜーんぶ「触った」ブロックをつなげて判定を行わないといけないんです。
だから、左右に移動するなら、こんなふうに同じ判定ブロックが2組必要。
もし上下左右に加え、斜め移動もできたら、全部で8つも判定ブロックを書かないといけません。
さ、ら、に、自分だけじゃなく、相手(壁とかボールとか敵キャラ)も移動するときには、相手からもぶつかってきます。
そしたら、「自分が動くとき」では判定できません。判定できないの、他の方法で当たったことを調べなきゃいけません。
だけど、この「監視員」だと、移動方向が4方向だろうが、8方向だろうが、それこそ100方向でも、この一つの判定ブロックで判定できます。
あと、向こうからぶつかってきたときもこれで判定できるんです。
こんなふうに、この監視員のやり方は、非常に便利なんです。
完成プログラム
それでは、プログラムの説明をしていきます。
最初に、完成プログラムを見て、あなたも一緒にプログラムしてください。
そして、猫を左右に動かしてください。
どうなりましたか? 予定通り、猫が稲妻に当たったら、「痛!」って叫びましたか?
…素通り?
…猫が稲妻を素通りしたでしょ?
プログラムは間違ってないんですよ、ほんと!
「プログラムは間違えてないのに、なんで素通りするのぉ?!」という体験が非常に重要なので、必ず体験してください。お願いしますね。
肝は「フラグ」
それじゃ、次。プログラムはそのまんまで、ステージ右上の旗マーク(フラグアイコン)をクリックしてください。
フラグアイコンが明るい黄緑色に変わって、当たり判定のブロックには後光が差したみたいに、周辺が黄色っぽくなったのが分かりますか?
この状態で、もう一度、猫を左右に移動させてみてください。 今度はどうでしょう?
「痛!」って叫びましたか?
プログラムが動くきっかけ
「プログラムが動くためには、きっかけが必要」で詳しく説明しますが、ブロックを複数つなげた塊(私は「チーム」と呼びます)が働く(動く)ためには、必ず一番上に茶色のイベントブロックの中の上がこんもりした「〇〇とき」ブロックが必要です。
例えば、これまでに何度もプログラムしてもらった「キーを押したときに移動する」チームには、一番上に「〇〇向き矢印キーが押されたとき」ブロックがありますよね。
このチームは、「右向き矢印キーが押された」ことを「きっかけ」にして、動き出すのです。
それじゃ、完成プログラムをもう一度みてください。一番上にはどんな「〇〇とき」ブロックがあるでしょうか?
そう、「フラグがクリックされたとき」ブロックがあります!!
このように、チームの一番上には、チームが動き出す「きっかけ」ブロックが必要です。
それじゃぁ、判定ブロック(「もし<>なら」ブロック)の上に、「フラグがクリックされたとき」をくっつければ完成!
とはいかないんです。これが残念ながら。
実際に、「フラグがクリックされたとき」ブロックをつなげて、動作を体験してみましょう。
プログラムを書いてから、ステージ右上の「フラグ」アイコンをクリックしてください。
どうなりましたか?
実行されるのは1度だけ
「フラグ」アイコンをクリックしたとき、一瞬「フラグがクリックされたとき」組に後光が差して、すぐ消えます。その後、猫を左右に動かして稲妻と当たっても、素通りするだけ。
これは、「フラグ」をクリックしたときに、1度だけ「猫が稲妻(Lightning)と触れた」かどうか判定して、このチームの働き(動作)が終わってしまったからなんです。
??? という方は、「右向き矢印キーが押されたとき」チームを見てください。
このチームは「右キーを押すと 猫が10歩動く」動作をするチームですが、右キーを1回を押すと、10歩動くんです。
重要だから、もう一度言いますね。
右キーを「1回」を押すと、「10歩」動くんです。
なので、20歩動かしたいときには、「10歩動かす」を2回実行するために、右キーを2回押す必要があります。
つまり、右キーを1回押すと、このブロックにつながっている下のブロック(チーム)の動作が「1度だけ」実行されるんです。
同じように、「フラグがクリックされたとき」チームも、フラグがクリックされたら、直後に「1度だけ」実行されます。つまり、一度だけ「猫と稲妻が触れたか」どうかを判定するんです。
だから、フラグをクリックした後に猫を動かしても、判定チームの動作はすでに終わっているので、「痛!」とは叫ばないんです。
では、どうすればいいでしょうか?
「ずっと」ブロックのお出まし
こんなときに登場するのが、「制御」スクリプトの中にある「ずっと」ブロック。
どういう動きをするかを、説明じゃなく、体感してもらいましょう。
「右矢印キー」チームに、図のように「ずっと」ブロックを挿し込んでください。
そして、右キーを押してみてください。どうなりましたか?
一度右キーを押すと、猫が右端まで移動し続けましたか? そして、「右矢印向きキー」チームにずっと後光が差して、「フラグ」が黄緑色になってませんか?
そして、左キーを押しても、動てるのか動いていないのか、よく分からない状態になっていませんか?
このままでは何もできないので、とりあえず「フラグ」アイコンの右横の「赤丸」アイコンを押してください。
すると、「フラグ」が濃緑色になって、後光が消えます。
どうでしょうか? どんな動きをしているか、あなたは想像できたでしょうか?
この「ずっと」ブロックは、右キーが押されて一度動きだすと、あなたが赤丸アイコンを押すまで、「ずっと」ブロックの間にあるブロックの動作を続けるんです。
誰かが止めるまで、ずーーーーと、繰り返し繰り返し動き続けるんです。
ちなみに、この動きを無限ループとか、無限繰り返しと呼んだりします。
ずっと判定する
実際、子供達がケガしないように注意しなければいけないときには、「ずっと」見渡してますよね、遊ぶのが終わるまで。
それと同じで、この「監視員」型の当たり判定プログラムも、プログラムが動いている間は「ずっと」判定し続ける必要があります。あなたがプログラムを止めるまで。
というわけで、猫が稲妻に触れたかどうかを「ずっと」判定するように、「ずっと」ブロックを組み込んでみましょう。
これが完成図です。
あなたの Scrachでも同じプログラムを作り終わったら、早速「フラグ」アイコンをクリックしてから、猫を左右に移動してみてください。
どうですか? あなたが赤丸アイコンを押すまで、「猫と稲妻が触れたか」をずっと判定し続けてくれましたか?
コメント