子ども向けのプログラミング言語、スクラッチ(Scratch)ですが、クローンといった、複製機能がついています。
この機能、便利そうですが、使い方によって、あれ?といった不具合が発生することも多々あります。
その一例をシューティングゲームにて、解説していきます。
作ったのは、こちら
RobotとBallが当たった判定をRobot側でした場合
(プログラミング例は、最新のバージョンで)
Robot側
Ball側
この状態だと、Ballが複数出ている状態でRobotにあたると、「このクローンを削除する」で、全てのBallが消えてしまいます。
おそらく、
クローンされたときのイベント内で処理が完結されないので、どのBallを消すのか、判断できずに、出ているBallが全て消える現象になっているのだと思われます。
これを修正して、Ball側で判断すると、
Robotは、
今度は、出ているRobotが全て消えるといった現象になりますが、このゲームの場合は、タイミングにより回避できます。
RobotがBallに当たったら、消すといったことを
Ballに触れた時に、コスチュームを変えて、しばらく出している時間を短くするなど
Robotを出すタイミングで、1体だけにすることで回避できそうです。
スクラッチ(Scratch)言語で、簡単に作ろうとすると、このような問題がおこるケースが出てきます。
が、、、
あくまでも、学習用と位置付けると、これでも十分なような感じですネ。
他の言語で作る場合には、複製してもどのクローンかを指定して、消すような処理になるので、こののような現象はおこりにくいかと思われます。
このような現象となった場合でも、ロジックをチェックして、しっかり説明して、あげたいですネ。
(*^^*)
以下、動画で簡単に動作を見ながら確認して下さい。
作ってみるのが、一番、解りやすいですよ。
(*^^*)