【中級:作り方説明+クイズ形式】Scratch(スクラッチ)でSTGシューティングゲームを作ろう!
Scratch(スクラッチ)でSTGシューティングゲームを作ります。ゲームを作る過程で、クローン、乱数を使った確率(真偽ブロック)の作り方ついて詳しく説明します。
日時: 2023/09/23(土) & 2023/09/24(日) 17:30 ~ 18:30
場所: オンライン講座
対象: KIDSPROスクール生、KIDSPRO eラーニングをご利用の方
必要なもの: Scratchが使えるパソコン、またはタブレット
費用: 無料
説明動画で作るScratchプロジェクト
ミサイルは自動的に出るので、マウスポインターでプレイヤーを操作するだけ!
エイリアンを何匹倒せるか!?エイリアンにぶつかるとGame Over!
※Scratchプロジェクト「STG:シューティングゲーム」は、https://scratch.mit.edu/projects/896521521よりアクセスできます。
STGシューティングゲーム:エイリアンのスクリプト
のスクリプト
コスチューム:
コスチュームをペイントエディターで作成
エイリアン正常体
四角形ツールなどを使って描く。
※コピーペースは、選択ツールを選んでからコピーしたいオブジェクトを選択しないと、コピーやペーストボタンが画面に表示されないので注意してください。
エーリアンやられた状態
四角形ツールなどを使って描く。
※Shftキーを押しながら、選択枠下に表示されるをドラッグしてオブジェクトを回転させると、45度間隔でオブジェクトが回転するので便利です。
- 旗をクリックしたら、変数「スコア」を「0」、変数「エイリアン残数」を「100」にリセットする。
- エイリアンの本体は隠して、大きさを50%にして、回転方法を左右のみにする。
※大きさのパーセンテージは、ペイントエディターで描いたエイリアンの大きさにより異なるので、自分の好きな大きさに変更してください。 - エイリアン本体のX座標を-200~200のいずれか、Y座標を0~150のいずれかにしてから、自分自身のクローンを作る処理を100回繰り返す。
※つまり、クローンがX座標を-200~200のいずれか、Y座標を0~150のいずれかの場所に100体生成される。 - 変数「エイリアン残数」が「0」になるまで、本スクリプトの実行を停止する。
- 変数「エイリアン残数」が「0」になったら、メッセージ「ゲームオーバー」を送信する。
※の残数が「0」になったらゲームを終了させたいので、ゲームオーバーの処理を実行するトリガーとなるメッセージ「ゲームオーバー」を送信する。メッセージは、メッセージを送信したスプライト自身、他のスプライト、ステージが受信することが出来る。
- クローンされたとき、エイリアンのクローンはステージに姿を表す。
※ステージから隠れているエイリアンのクローンを作った場合、クローンも隠れた状態となる。そのため、クローンブロックを使う際には、スプライトの本体は「隠す」ブロックでステージから見えなくしておき、「クローンされたとき」ハットブロックの下に「表示する」ブロックを連結して、クローンだけステージに表示させることが多い。 - 2分の1の確率で真(True)を返すを連結した条件文により、2分の1の確率でエイリアン(クローン)は右を向き、2分の1の確率で左を向く。
※は「1」か「2」のいずれかの数値をランダムに返すので、は2分の1の確率で真(True)を返すことになる。2分の1の確率だからといって、真(True)となったら次は偽(False)になるわけではない。真(True)が続くときもあるし、偽(False)が続くときもある。何百回も繰り返せば、全体の確率が2分の1になるという意味である。 - 10分の1の確率で真(True)を返すが真(True)となるまで、エイリアン(クローン)が向いている方向に30ピクセル動いて、1秒待って、もしも端に着いていたら反対方向に跳ね返る処理を繰り返す。
※エイリアン(クローン)が30ピクセル動いて、1秒待つという処理を繰り返す度に、による判定が実施される。の左側の引数はで、「1」~「10」のいずれかの数値を返すので、10分の1の確率で真(True)を返すことになる。 - 処理3が終了したら、エイリアン(クローン)は下を向いてから、ステージの端に触れるまで4ピクセルずつ下方向に移動する。
- 処理4が終了したら、つまりエイリアンがステージの端に触れたら、変数「エイリアン残数」を「1」減らし、クローンを削除する。
※Scratchでは同時(リアルタイム)に生成できるクローンの数は300までなので、必要のなくなったクローンは削除すること。
- クローンされたとき、コスチュームをにする。
- ミサイルに触れるまで、プログラムの実行をストップする。
※スクリプトは上から下方向に実行されるが、により指定した条件が成立するまでスクリプトの実行がストップする。 は真偽条件にを設定したので、エイリアン(クローン)はミサイルにぶつかったら、以下の処理3-4を実行する。 - 処理2が実行されたら、つまりエイリアン(クローン)がにぶつかったら、コスチュームをにして、「Pew」の音を鳴らす。
- 変数「スコア」を「1」増やし、変数「エイリアン残数」を「1」減らし、クローンを削除する。
STGシューティングゲーム:プレイヤーのスクリプト
のスクリプト
コスチューム:
コスチュームをペイントエディターで作成
プレイヤー機
四角形ツールなどを使って描く。
※コピーペースは、選択ツールを選んでからコピーしたいオブジェクトを選択しないと、コピーやペーストボタンが画面に表示されないので注意してください。
やられた状態
四角形ツールなどを使って描く。
※Shftキーを押しながら、選択枠下に表示されるをドラッグしてオブジェクトを回転させると、45度間隔でオブジェクトが回転するので便利です。
- 旗をクリックしたら、コスチュームをにして、X座標を「0」、Y座標を「-150」に設定する。
- エイリアンに触れるまで、プレイヤーのX座標をマウスのX座標と同じにする。
※これにより、プレイヤー機のX座標(左右の位置)はマウスポインターのX座標と同じになり、マウスポインターで操作出来るようになる。また、はの条件が成立するまで繰り返され、触れた際にはの実行はストップする。この動作を利用して、当たり判定の処理も実装している。 - 処理2の実行が終了したら、つまりにぶつかったら、「Oops」の音を鳴らして、コスチュームをにする。
- メッセージ「ゲームオーバー」を送信する。
※プレイヤー機がにぶつかったときもゲームを終了させたいので、ゲームオーバーの処理を実行するトリガーとなるメッセージ「ゲームオーバー」を送信する。なお、メッセージは、メッセージを送信したスプライト自身、他のスプライト、ステージが受信することが出来る。
STGシューティングゲーム:ミサイルのスクリプト
のスクリプト
コスチュームをペイントエディターで作成
- 旗をクリックしたら、本体をステージから隠し、最背面へ移動する。
※「最背面に移動する」ブロックを実行すると、ミサイルがと同じ場所に表示されたとき、ミサイルはの後ろ側に隠れるようになる。ただし、スプライトのコスチューム中心点がズレていると、見えてしまう場合があるので注意(チュートリアル動画2:00ぐらいからの解説を見てください)。 - 0.1秒間隔で、ずっと繰り返し自分自身のクローンを作る。
- クローンされたとき、ステージに姿を表し、の中心点に移動する。
※旗がクリックされたとき「最背面に移動する」ブロックが実行されているので、この時点では、はの背面に隠れていて見えない。 - ステージの端に触れるまで、上方向に8ピクセルずつ動くブロックを繰り返し実行する。
※本処理により、0.1秒間隔で生成されるが上方向に移動し、機関銃のようにミサイルが連射されるようになる。 - 処理2の処理が終わったとき、つまりがステージの端まで移動したらクローンを削除する。
- メッセージ「ゲームオーバー」を受け取ったとき、ミサイル内の実行中のスクリプトを停止する。
※により、同じスプライトの内の他の実行中のスクリプトを止めることができる。では、繰り返し生成するクローンのスクリプトと端に触れるまでY座標を変え続けているスクリプトが実行されているので、この実行中のスクリプトがストップする。つまり、メッセージ「ゲームオーバー」を受け取ると、ミサイルのクローンは生成されなくなり、発射中のミサイルも停止する。 - のクローンを削除する。
※上方向に移動しているが削除される。
STGシューティングゲーム:ゲームオーバーのスクリプト
のスクリプト
コスチュームをペイントエディターで作成
テキストツールで「GAME OVER」という文字を入力し、入力したオブジェクトを選択ツールで選択し、選択ツールの黒丸をドラッグすれば大きさを変更できる。
- 旗をクリックしたら、本体をステージから隠し、変数「スコア」のステージモニターをステージから隠し、X座標を「0」、Y座標を「0」にする。
- メッセージ「ゲームオーバー」を受け取ったら、ステージに姿を表し、変数「スコア」のステージモニターも表示する。
ステージモニターは、ブロックパレットにある値ブロックの左側のチェックボックスを入れるとステージに表示される。
3種類のステージモニターがあり、ステージモニターをダブルクリックするか、ステージモニターを右クリックしてモニターの種類を選択する事ができる。
- 普通の表示:
- 大きな表示:
- スライダー:
※リストの値ブロックには、リストを表示するためのステージモニターもある。
止めるブロックは、スクリプトの動きを止めるためのブロックです。これらのブロックを使うと、プログラムの動き(シーケンス)を細かく制御することができます。
Scratchプロジェクトの中で動いているすべてのスクリプトを止めます。すべてのスプライトや音楽、動き、すべてが止まります。
このブロックが含まれているスクリプトだけを止めます。他のスクリプトやスプライトの動きは止まりません。
同じスプライトの中で動いている他のスクリプトを止めます。このブロックが含まれているスクリプトは止まらず、他のスプライトも影響を受けません。
MITメディアラボにより開発されたビジュアルプログラミング言語。子供たちが物語やゲーム、 アニメーションなどのインタラクティブな作品をプログラミングできる。また、自分の作った作品を世界中の人々と共有できるコミュニティーサイトでもある。世界中で1億人を超えるユーザがいる。
こちらのホームページにアクセスすれば無料で利用できる。