
その1はこちらです。
- Scratch(スクラッチ)で簡単なゲームを作ってみました | novalue – 自分らしさで彩るメディア
https://no-value.jp/programming/11320/
mananyのオンライン学習コンテンツに「Scratch(スクラッチ)でシューティングゲームを作ろう」というものがありましたので、動画を見ながら作成したゲームをより楽しめるようにアレンジしてみました。
まずはプレイ動画をご覧ください。
それではゲームの説明をしたいと思います。
スペースキーでゲームスタートです。カーソルキー↑↓で魔法使い(Wizard)を操作し、a、sキーで攻撃します。aキーは稲妻(Lightning)、sキーはクリスタル(Crystal)です。
敵キャラクターには属性があり、コウモリ(Bat)は稲妻でダメージを受けますが、クリスタルは ダメージを受けず、-5点になります。ゴースト(Ghost)はクリスタルでダメージを受けますが、稲妻はダメージを受けず、-5点になります。
ボスキャラのガイコツ(Skeleton)は稲妻、クリスタルともダメージを受けますが、倒すにはそれぞれ 20発ずつ当てる必要があります。
また、ガイコツは魔法使いに向かってきますが、触れられたらゲームオーバーです。さらに、時間制限もあり、時間内にガイコツを倒せなくてもゲームオーバーです。
ではゲームのプログラム(スクリプト)を細かく見ていきましょう。
魔法使い(Wizard)はこのようになっています。

- ↑↓キーで上下(y軸方向)に30ずつ移動します。
- aキーを押すと「attack1」というメッセージを出し、稲妻のスクリプトに渡します。また攻撃時にポーズを「wizard-c」に変更するようにしました。
- sキーを押すと「attack2」というメッセージを出し、クリスタルのスクリプトに渡します。こちらも攻撃時にポーズを「wizard-c」に変更するようにしました。
- ゲームが始まるとガイコツに触れられたら「Scream2」(叫び声)と「Lose」の音を鳴らし、「game end」のメッセージを背景のスクリプトに渡してBGMを止めるようにしました。
コウモリ(Bat)のスクリプトはこのようになっています。

- ゲームが始まると、右端の方にランダムに出現します。また、パタパタと羽ばたいて見えるように、「bat-a」と「bat-b」が交互に表示されるようにしました。そして、点数が200点になるとボスキャラが 出現するように「boss」のメッセージをガイコツのスクリプトに渡すようにしました。
- コウモリとゴーストはボス戦に参加しませんので、「boss」のメッセージで隠すようにし、時々誤作動がありましたので念のため他のスクリプトも止めておきます。
- 稲妻に当たった場合は「damage1」というメッセージを稲妻のスクリプトに送り、稲妻を隠します。また、得点を20点加算し、ダメージを受けた表示として効果音と「bat-c」のコスチュームにします。
- クリスタルに当たった場合は「damage2」というメッセージをクリスタルのスクリプトに送り、クリスタルを隠します。こちらはダメージを受けませんので、得点を-5点し、効果音と「bat-d」を表示します。
ゴースト(Ghost)のスクリプトはこのようになっています。基本的にはコウモリと同じです。

- 得点が100点を超えると出現するようにしましたので、ゲーム開始時には非表示です。コウモリの左側(魔法使いから見て手前側)にランダムに出現します。
- ゴーストもコウモリ同様ボス戦に参加しませんので、「boss」のメッセージで隠すようにします。
- クリスタルに当たった場合は「damage2」というメッセージをクリスタルのスクリプトに送り、クリスタルを隠します。また、得点を10点加算し、ダメージを受けた表示として効果音と「ghost-c」のコスチュームにします。
- 稲妻に当たった場合は「damage1」というメッセージを稲妻のスクリプトに送り、稲妻を隠します。こちらはダメージを受けませんので、得点を-5点し、効果音と「ghost-b」を表示します。
稲妻(Lightning)のスクリプトはこのようになっています。

- aキーを押すと「attack1」というメッセージを魔法使いのスクリプトから受け取り、魔法使いの中心座標からx方向に60、y方向に15移動した場所から表示されます。ちょうど「wizard-c」の指先から発射されているように見えると思います。
- 敵キャラクターに当たらず画面端まで移動した場合は消えるようになっています。
- 敵キャラクターに当たった場合は「damage1」というメッセージを受け取り、隠すようにしました。
クリスタル(Crystal)のスクリプトはこのようになっています。基本的には稲妻と同じです。

- aキーを押すと「attack2」というメッセージを魔法使いのスクリプトから受け取り、魔法使いの中心座標からx方向に60、y方向に15移動した場所から表示されます。ちょうど「wizard-c」の指先から発射されているように見えると思います。
- 敵キャラクターに当たらず画面端まで移動した場合は消えるようにしましたが、上手く消えませんでしたので少し手前で消えるようにしました。
- 敵キャラクターに当たった場合は「damage2」というメッセージを受け取り、隠すようにしました。
ガイコツ(Skeleton)のスクリプトはこのようになっています。

- コウモリのスクリプトから「boss」のメッセージが来るまで登場しませんので、隠しておきます。
- 「boss」のメッセージを受け取った場合、y座標180から徐々に魔法使いに向かって進んでいきます。その際、「skeleton-e」から「skeleton-b」までを順番に表示することによって、歩いているような動きを再現しました。
- 受けた攻撃の回数をカウントするため稲妻は「damage1」、クリスタルは「damage2」という変数を用意し、それぞれ20回になると得点を100点加算し、点滅しながら効果音と共に消えるようにしました。また「game end」のメッセージを背景に渡し、BGMを止めるようにしました。
- 稲妻とクリスタルが当たった場合の処理は共通で、それぞれ「damage1」「damage2」のメッセージで表示を消し、「damage1」「damage2」の変数をカウントアップ、効果音を鳴らすようにしました。
最後に背景のスクリプトです。

- スペースキーを押した際に得点を0に戻し、BGMを鳴らします。今回は8回ループさせて終わる事で制限時間としました。「終わるまで~を鳴らす」としなかったのは、曲間に空白が出来てしまうためです。
- ガイコツを倒した場合、魔法使いがガイコツに触れられた場合は「game end」のメッセージが来ますのでBGMを止めるようにしました。
以上で説明は終わりです。最後まで読んでいただきありがとうございました。
キーを押した際の処理やメッセージ、変数を使えば様々な事が出来ますので、皆さんも色々と 遊んでみてください。
完成したゲームはこちらです。
https://www.dropbox.com/s/359wc5twibklpl5/wizard.sb3?dl=0
Dropboxにはログインしなくてもダウンロード可能です。
一旦パソコンにダウンロードして任意の場所に保存し、Scratch(スクラッチ)のホームページの「作る」から「ファイル」→「コンピュータから読み込む」でダウンロードしたファイルを選択します。
スペースキーを押すとゲームが始まります。チュートリアルは×印で閉じてしまって大丈夫です。