2023.12.28Scratch で始める小学生からのプログラミング
小学生がスクラッチでシューティングゲームを作る2つのステップ(敵の動き)

こんにちは!タイムレスエデュケーションの日高です。
前回の記事では、スクラッチでシューティングゲームを作る時、プレイヤーの動きをどのように作成するのかを説明させて頂きました!ネコが空を飛ぶ動きや、たまを発射する機能などを作りましたね。今回は、敵のキャラクタの動きを作る方法について解説します。敵キャラを追加して、よりゲームらしくなるようにプログラムを作っていきますので、是非最後までお読み下さい!
ステップ1:敵キャラの動きを作る
それでは早速、敵キャラの動きを作っていきましょう!ここでは、ドラゴンを敵として使う事にします。皆さんは、自分が好きなキャラクタを敵として追加して下さいね。ドラゴンはネコとは反対側から表示させて、ネコがいる方の端まで動かします。動作の流れは、以下のようになります。
プログラムが始まったら、次のことを繰り返す
1. ドラゴンを右端に置く
2. ドラゴンが左端に行くまで繰り返す
2-1. ドラゴンのx座標を左に10動かす
2-2. ドラゴンのy座標を上もしくは下へ不規則に動かす
このようにプログラムを作っていくと、ドラゴンが動くようになります。それでは、1つ1つの動きについて見ていきましょう!
1. ドラゴンを右端に置く
先ほど説明した通り、最初にドラゴンを右端に置きます。位置を変えるためには、x座標とy座標をそれぞれ設定する必要がありましたね。スクラッチでは、右端のx座標の値が240となります。そしてy座標は、動きのパターンをランダムに変えるため、今回は乱数を使うことにします。
2. ドラゴンが左端に行くまで繰り返す
次に、ドラゴンが左端に行くまで繰り返す方法について考えます。左端のx座標は、スクラッチでは-240となります。そこで、x座標の値が-240より小さくなったら、ドラゴンが左端までたどり着いたと考えます。制御というカテゴリーの中に「◯◯まで繰り返す」のブロックがあるので、このブロックを使って、左端の判定条件を入れましょう!この時、ドラゴンのx座標を変数に保存しておくと、判定をする度にx座標の値を確認できます。条件として入れる式は、「ドラゴンのx座標 < -240」になりますね。
2-1. ドラゴンのx座標を左に10動かす
x座標を左に10動かす方法は、分かるでしょうか。ここまでの内容を理解されている方にとっては、簡単かもしれませんね。そう、x座標を-10だけ移動させると、ドラゴンを左へ動かすことができます。
2-2. ドラゴンのy座標を上もしくは下へ不規則に動かす
最後に、ドラゴンのy座標を、上もしくは下へ不規則に動かす方法について考えます。これも前回の記事を読んでいる方にとっては簡単だと思いますが、乱数の機能を使えば良いですね。y座標がプラスの値の場合は上、マイナスの値の場合は下なので、「上もしくは下」とするにはプラスからマイナスの値まで幅を持たせれば良いことがわかります。ただドラゴンの動きが大幅に変わってしまうと不自然なので、今回は-50から50までの間で動かしてみましょう!
これまで作ったプログラムをまとめると、以下のようになります。ここでは、「ドラゴンのX座標」、「ドラゴンのY座標」、「乱数」という3つの変数を使っています。
ステップ2:条件文を書く
それでは、これまでに作ったプログラムを動かしてみましょう。最初はそれらしく動いているように見えますが、途中で何かおかしいことに気づくと思います。下記のように、ドラゴンが画面から消えませんでしたか?
作ったプログラムの中で、何が問題だったのでしょうか。実はy座標の値を乱数で変えた時、何度か変更している間に、最大値の180や最小値の-180を超えてはみ出したのです。ではドラゴンがはみ出ないようにするために、どうすれば良いでしょうか。
条件判定を作る
今回は、次のように考えました。
1. 乱数を足したドラゴンのy座標が -180 から 180 までの中にある場合、次のことをする
1.1 ドラゴンのy座標の値を、y座標と乱数を足した値にする
そうではない場合は、次のことをする
1.2. ドラゴンのy座標の値を、y座標から乱数を引いた値にする
プログラムを作る場合、条件判定の考え方を理解することが重要です。上記の「もし◯◯ならA、そうでなければBをする」というのは、プログラミングをする際に理解しなければならない大切な要素の1つです。先ほど書いたように、ここではy座標の値が -180から180までの間にある必要があるので、このような式で表現しています。
複数の条件が成り立つ時
次に、演算のカテゴリーにあるブロックを見てください。比較をする時に使う「◯<◯」というブロックがありますね。ただこのブロックだと、値を2つしか入れられません。では、どのようにy座標の条件を作成したら良いでしょうか。以下に書いた2つの式が、両方成り立つ場合という条件です。
・-180 < ドラゴンのy座標(条件A)
・ドラゴンのy座標 < 180 (条件B)
これを条件として1つの式にするためには、条件Aと条件Bが同時に成り立つ場合という式を書くことになります。この部分は小学校で習う範囲ではないので申し訳ないのですが、小学生でも分かる話で例えると、四角形が正方形であるためには次の条件を満たすことが必要です。
・すべての角度が等しい(90度である) (条件A)
・すべての辺の長さが等しい (条件B)
この2つの条件が成り立たないと、正方形にならないと習いますよね。(条件Aだけだと長方形、条件Bだけだとひし形になります)これを条件式として作る場合、「条件A “かつ” 条件B」と表します。そのため、四角形が正方形である条件は「すべての角度が等しい」かつ「すべての辺の長さが等しい」となります。
これを今回のプログラムに当てはめると、条件式は「-180 < ドラゴンのy座標」かつ「ドラゴンのy座標 < 180」となる事が分かるかと思います。そして、この条件をブロックで表現するためには、演算のカテゴリーにある「かつ」というブロックをを使います。
ここでは、以下のようにプログラムを作ってみました。乱数を足す際、-180 から 180 の範囲に入らなかった時の座標の計算で乱数に2をかけています(*の記号はかけ算の意味)が、これは真ん中の方に戻りやすくするためにそうしています。
絶対値の考え方をすでに理解している方は、「ドラゴンのy座標の絶対値 < 180」という式も思いつくはずです。もちろん、この条件でも同じ動きを作ることができます。これは、ご自身で是非試してみて下さいね。
まとめ
今回は、敵キャラの動きを作りました。プログラミングをする時の考え方が分かるように、プログラムを作る過程についても詳しく説明したつもりです。ただ既にお気づきだと思いますが、実はまだドラゴンが飛んで来るだけで、プレイヤーがドラゴンを撃ち落とすことができません。この機能の作り方については、次回改めて解説させて頂ければと思います。今回も最後まで読んで頂き、誠にありがとうございました!次回の記事を、どうぞ楽しみにお待ち下さい!!
東京都文京区小石川、東京都文京区本駒込、東京都新宿区下落合で、プログラミング&ロボット教室を運営しています!
小学生向けの内容としては、スクラッチやロボット(WeDoやマインドストームなど)の教材がございます。また中学生以上の受講生に向けた内容としては、Pythonという人工知能の開発などによく利用されるプログラミング言語を学習できる教材もご用意しています。子どもから大人までご受講頂けますので、プログラミングにご興味あれば、是非お気軽にお問い合わせ下さい!
プログラミング初心者の方も、大歓迎です!
お待ちしております!!