どうも、小中学生を対象にプログラミング授業をさせて頂いている西野竜平です!テストも兼ねて、簡単なシューティングゲームを1から作ってみました。
"ショートニング・スター"というタイトルでScratchで公開しています。ぜひ遊んでみてください!

Scratchを起動

Scratch3.0を起動します。
ネコは使わないので、削除しましょう。
スプライトをアップロード
まず、コチラで作成した素材(zipデータ)をダウンロードしてください。
https://ryuheidou.com/wp-content/uploads/2020/07/Shortening-Star-Pack.zip
ダウンロードが完了したら、素材を解凍してください。

解凍したフォルダから、素材をScratchにアップロードします。
右下のスプライトのアイコンから"スプライトをアップロード"を選択。

素材"hime01"を選択。

himeのコスチュームをアップロードします。
"hime01"を選択し、コスチュームを選択。左下にある"コスチュームをアップロード"を選択。

"hime02" "hime03" "hime04"をそれぞれアップロードします。
これで、himeのスプライトの準備は完了です。
キーボードで操作できるようにする

イベントから、"(メッセージ1)を受け取った時"を出し、名前を"コントロール"に変更します。
キーボードの右を押したら、himeが右に動くようにします。
- (コントロール)を受け取ったとき
- ずっと
- もし((右向き矢印)キーが押された)なら
- x座標を(10)ずつ変える
- 回転方法を(回転しない)にする
- もし端に着いたら、跳ね返る
上記を設置します。
*"回転方法を回転しないにする"を入れる理由は、"もし端に着いたら、跳ね返る"の影響でスプライトが反転するのを防ぐ為です。

先ほど作ったブロックを複製。
"もし(左向き矢印キーが押された)なら"に変更し、x座標も"(-10)"に変更します。
これで、🏁を押した後に、"(コントロール)を受け取ったとき"をクリックすると、キーボードの左右キーを押すと右、左とスプライトが動かせるようになります。
初期値を設定する

"ブロック定義"から、"初期"を作成します。

次に、新しい変数、"レベル"と"スコア"を作ります。

"レベル"を"1"、"スコア"を"0"点からゲームスタートするようにします。
- 定義(初期)
- (スコア)を(0)にする
- (レベル)を(1)にする
- (最前面)へ移動する
- (90)度に向ける
- コスチュームを(hime01)にする
- 大きさを(100%)にする
- x座標を(0)、y座標を(-145)にする
上記を設置します。
待機アニメーションを作る

再び、ブロック定義で"待機アニメーション"を作成します。
- 定義(待機アニメーション)
- もしコスチュームの番号=(1)なら
- コスチュームを(hime02)にする
- でなければ
- コスチュームを(hime01)にする
- (0.2)秒待つ
*0.2秒経つ毎に、hime01、hime02とコスチュームを変更します。
玉を撃てるようにする

ダウンロードした素材、"ball"をスプライトにアップロードします。

ballのスプライトを選択し、
- 🏁が押されたとき
- 隠す
- (最前面)へ移動する
- 大きさを(50)%にする
- x座標を(0)、y座標を(-145)にする
上記を設置します。

🏁が押された時に、先ほど作った"初期"と"待機アニメーション"を入れ、スペースキーが押された時に、玉を撃つ。までのブロックを作成します。
次に、himeスプライトを選択。
- 🏁が押されたとき
- 初期
- (コントロール)を送る
- ずっと
- もし((どれかの)キーが押された)ではない なら
- 待機アニメーション
- もし((スペース)キーが押された)なら
- (ball)のクローンを作る
- y座標を(-5)ずつ変える
- (0.1)秒待つ
- y座標を(5)ずつ変える
上記を設置します。
*9~11は、himeが玉を撃った時の反動を表現する為に設置します。

再びballスプライトに戻り、
- クローンされたとき
- 表示する
- (hime01)へ行く
- ((y座標)>(170))まで繰り返す
- (15)度回す
- y座標を(15)ずつ変える
- このクローンを削除する
上記を設置します。
*ballがゲーム画面の天井170に着くまで、ballを15度回転させながら、y座標を15ずつ加え、ゲーム画面の天井170に到達したらクローンを削除します。

これで、himeが横に移動しながら、ballを撃つ事が出来る様になりました。
敵キャラを作る

ダウンロードした素材から"cake1"のスプライトをアップロードし、コスチュームの2番目に"cake02"をアップロードします。

敵がゲーム画面の天井からランダムなタイミングで、ランダムなx座標から出現するようにします。
- 🏁が押されたとき
- (1)秒待つ
- ずっと
- x座標を((-170)から(170)までの乱数)、y座標を(160)にする
- コスチュームを(cake1)にする
- 大きさを(80)%にする
- (90)度に向ける
- 隠す
- (自分自身)のクローンを作る
- ((0.1)から(0.6)までの乱数)秒待つ
上記を設置します。

次に、下に着いたらcake1が消える、なおかつ、ballに触れたらスコアの数字が10点プラスされ、爆発コスチュームに変更して消える。を作成します。
- クローンされたとき
- 表示する
- ((端)に触れた)まで繰り返す
- y座標を(-4)ずつ変える
- もし((ball)に触れた)なら
- (スコア)を(10)ずつ変える
- コスチュームを(cake2)にする
- (5)秒繰り返す
- (30)度回す
- このクローンを削除する
- このクローンを削除する
上記を設置します。
*8と9は、cake2のコスチュームを爆発しているように見せる為のアニメーションです。
ダメージを受ける

himeのスプライトに、cakeのスプライトが当たった時に、ダメージを受けたアニメーションを作成します。
- (ダメージ)を受け取ったとき
- (4)回繰り返す
- コスチュームを(hime04)にする
- (0.2)秒待つ
- コスチュームを(hime03)にする
- (0.2)秒待つ
上記を設置します。

次に、🏁部分の"もし((cake1)に触れた)なら"の部分に、(ダメージ)を送るを設置します。
- もし((cake1)に触れた)なら
- (ダメージ)を送る
- (1.6)秒待つ
*1.6秒の理由は、先に作ったダメージを受け取ったときの秒数(0.2秒待つ+0.2秒待つ)*4回繰り返すであるから。

次に、cakeのスプライトを選択。himeがダメージを受けたらcakeが爆発アニメーションに切り替わり、消える様にします。
- (ダメージ)を受け取ったとき
- コスチュームを(cake2)にする
- (5)回繰り返す
- (30)度回す
- 隠す
- (スプライトの他のスクリプトを止める)
上記を設置します。
*2~4が爆発アニメーションになります。
ゲームオーバーを作る

himeにcakeが当たった時に、ゲームオーバーとして、ゲームを止めるプログラムを組みます。
- (ゲームオーバー)を受け取ったとき
- (スプライトの他のスクリプトを止める)
上記を設置します。

次に、🏁部分の"もし((cake1)に触れた)なら"の一番下に、
- (ゲームオーバー)を送る
を設置します。
これで、大まかなシューティングゲームが完成しました。
ゲームの難易度を上げる
このままでは、ゲームとしてとても退屈な為、ゲームの難易度レベルを上げていくプログラムを作成します。

スコアの点数が条件を満たした時に、レベルを1つずつ上げていき、cakeが迫ってくる速度を上げていきます。
まず、cakeのスプライトを選択します。
- (レベル)を受け取ったとき
- もし((スコア)>(50))なら
- (レベル)を(2)にする
- y座標を(-2)ずつ変える
上記を設置します。

スコアの条件を100、150、200…と複製していき、ドンドン難易度が上がる設定が無限に作れます。
終わり
初めてのScratch記事の作成の為、少し要領を得ていませんでした。
随時この記事を磨いていこうと考えています。
また、ゲームスタート画面と、ゲームオーバー画面の作成も随時この記事に追記してきますので、よろしくお願いいたします。
