Scratchで始める小学生からのプログラミングとして書いていますが、前回からシューティングゲームを題材に記事を書いています。前回の内容でシューティングゲーム「ネコディウス」の一部ができたかと思います。ネコが空を飛んでいる様子や、ネコからたまを発射する部分も作ることができたかと思います。ゲームとして成立させるためにはやはり敵キャラが必要です。今回は敵キャラをいれてそれらしくしてみましょう。ステップ5:敵キャラの動きを作る敵キャラを作っていきましょう。敵キャラはどのようなものでも構わないのですが、今回の例としては、ヘリコプターにします。ヘリコプターをネコとは反対側から表示させて、ネコのいる方の端まで移動させます。動きの流れとして、つぎのような流れを考えました。ヘリコプターのy座標を上もしくは下に不規則に移動させるこれの流れを、ブロックをつかって表現していけば、ヘリコプターのプログラムになります。1つずつ考えていきましょう。座標、y座標をそれぞれ設定する必要がありました。右端を表すにはどうすればよいでしょうか?ここまで読んでいただいている方はすでに回答が頭に浮かんでいるかもしれませんが、x座標の値を240にすればいいのです。(これがわからない方、過去の記事をチェックです。)y座標はどうすればいいでしょうか。これは色々な考え方がありますが、ゲームというのはパターンが予測できるとあまり面白くないので、私は乱数で設定しています。2.ヘリコプターが左端に行くまでくりかえす次に2の「ヘリコプターが左端に行くまで繰り返す」はどう書けばよいでしょうか。これは次のように考えます。-240よりも小さいときに左端にたどり着いたと考えます。繰り返すブロックの中に、「○○まで繰り返す」というブロックがあります。このブロックをつかって、左端の判定条件を入れるとできます。x座標を変数に保存しておいて、くりかえし判定をするたびにそのx座標の値を確認できるようにしてみましょう。-240」という式を入れてあげればよいのです。x座標を10だけ左に動かす2.1の「x座標を10だけ左に動かす」はどうでしょう。「ヘリコプターのy座標を上もしくは下に不規則に移動させる」はどうでしょう。これもすでに前回の記事などを読んでいる方はすぐにわかると思いますが、不規則な動きを作るのは乱数です。—の幅を持たせてあげればよいのです。間で動かすことにしました。以上をまとめますと、つぎのようなブロックになると思います。ここでは、「ヘリコプターのx座標」、「ヘリコプターのy座標」、「乱数」という3つの変数を使用して記述しています。ステップ6;条件文を書くではこれで動かしてみましょう。動かしてみると最初はそれらしく動いていると思うのですが、おかしいことに気がつくはずです。つぎのような画面になりませんでしたでしょうか?そうです。ヘリコプターが画面から消えてしまうのです。書いたプログラムの何が問題だったのでしょうか?本当はこれを問題として考えてもらいたいのですが、今回は理由を示します。気づかれる方もいるとは思いますが、y座標の値を乱数で変更させた場合に、何度か変更していくうちに値が最大の180もしくは、最小の-180の範囲をはみ出してしまうのです。すると画面に表示がされなくなってしまいます。この問題を直す必要があります。したらよいでしょうか?条件判定を作るつぎのように考えました。ヘリコプターのy座標の値を、y座標と乱数を足した値にする。ヘリコプターのy座標の値を、y座標から乱数を引いた値にする。今回の記事で重要なのは、条件文や条件判定の考え方を理解する点だと思いますが、まさにこの部分はそれに当たります。1で記載している、「もし、、、ならばA、そうでなければ、Bをする」というのはプログラミングを行う際に理解しておかなければならない重要な要素の一つです。条件判定がかけると色々なプログラムを書くことができるようになります。-180から180までの間にある必要があるので、これを式で表現します。複数の条件が成り立つとき演算のところのブロックを見てください。比較をする「○<○」というブロックがありますが、これは値が2つしかかけません。やってこれを記述したらよいでしょうか。2つの式が両方成り立つときです。(条件B)条件Aと条件Bが同時に成り立つことを式に書くことになります。小学生からといいつつ、この部分は小学校では習わないので若干恐縮ですが、いわゆる数学の証明問題を思い出していただければわかります。(図形Aと図形Bは合同であるとか、、、中学生ですね。)小学生でも分かる話を例にすると、四角形が正方形であるためには次の条件をみたすことが必要です。(条件B)の2つが成り立たないと正方形にならないと教わります。(条件Aだけだと長方形、条件Bだけだとひし形ですよね。条件B」と表現します。「すべての辺の長さが等しい」です。これを先ほどのヘリコプターに当てはめますとこのようになります。これをブロックで表現してあげればよいのです。○」というブロックがありますので、これを使います。つぎのような内容で記述してみました。範囲に入らなかった時の座標計算のときに、乱数に2かけていますが(*の記号はかけ算の意味)これは真ん中の方に戻りやすくするためにそうしています。180なんて式を思いつくはずですが、もちろんこれでも同じ動きになります。これはご自分で試してみてください。まとめ今回は敵の動きを作りました。プログラミングを行う場合の考え方がわかるように、作り方の過程を書いているつもりです。流れをおおまかにまず決めて、細かい問題に分けて考えていくのです。条件文の説明をしています。この部分は、大学の講義だと論理学としてもっとガッツリとやるのですが、少々難しすぎる気がするので、まずはこのレベルで留めておきます。違う機会にもう少し詳細に書きたいと思います。気づかれていると思いますが、実はこの内容だけでは、ヘリコプターが飛んで来るだけで、撃ち落とせないです。これを書き始めると長くなるので次回にて説明させていただきます。作り方が理解できてくると、自分で好きなモノを作ることができるようになってきます。これを理解するには、やはり経験が大事。自分で何度もやってみることです。私どもの教室では、このような経験をくりかえし積んでいくことで、クリエイティブな人材を育てていきます。対象としたプログラミング&ロボット教室を開校しています。スクラッチはジュニアコースで受講できます。創造性や協調作業などこれからの時代に必要となる素養を育てるコースです。ご興味ありましたらぜひお問い合わせください。夏休みの企画として、サマースクールを実施します。ここで取り上げているスクラッチやロボットプログラミングを体験できる内容となっています。詳細はこちらでご確認ください。ご参加お待ちしております。授業運営パッケージ弊社で実施している授業を取り入れたい方々向けに提供しています。