※ 当ページには【広告/PR】を含む場合があります。
2020/10/25
【Scratchで簡単なゲーム作成編⑧】条件を満たした時のスプライトの進化状態を追加する
今回はステージ画面やシーンの切り替えなどの際に利用する画面遷移のテクニックをプログラムに実装してみます。画面遷移を取り入れることで、プレイヤーにゲームをより長く楽しんでもらるようになったり、ストーリー性も盛り込めるようになります。ちなみに、今回の内容での改造後のサンプルゲームは以下のようになります。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
オープニング画面を作る
これまでは🚩
を押してからゲームをスタートしていましたが、今回からゲームの最初の画面であるオープニング画面を作成してみたいと思います。背景の追加
まずは背景に新しいコスチュームを追加してゲームのタイトルを描きます。コスチュームの名前はスタート
としておきます。コードも以下のように、🚩
が押されたイベントのブロック部も、新しくステージ1
のメッセージを受け取ったときに変更します。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
スタートボタンのスプライト
スタート画面にスタートボタンを押してからゲームを開始できるようにしてみます。新しいスプライトとして、はじまり
という名前でスプライトを作成し、スタート
というボタン用のコスチュームを1つ追加します。次にゲームをスタートしてから、このスタートボタンを押したときにステージ1
イベントを送信するようなスクリプトを作ります。スプライトをクリック方法もいくつかありますが、このスプライトが押されたとき
ブロックを使うのが一番理解しやすいので、ローカル変数スタート?_
を使ってループ処理を切り替えながら以下のようにしてみます。また、以降の内容でステージを増やす時に利用するグローバル変数ステージ
も追加しておきます。このステージ
を使って、ゲームのステージが今どこあるのかを保持します。他のスプライトの修正
このスタートボタンを押してゲームが開始されるか試す前に、既に🚩が押されたとき
で初期化されていたスプライトを全てステージ1を受け取ったとき
で初期化するように以下の置き換えを行います。またスタート画面を追加したので、それまでは必要でなかった初期化処理を追加しないといけないスプライトもあるので、以下のように最初の画面では隠せるようにしておきます。これでスタート画面からゲームが開始できるようになりました。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
ステージ画面を変える
では次にゲームのステージを変える機能を追加します。これも先程のスタート画面を実装したときと同じような理屈で、ステージ1でのゲームクリア条件だったところを、次のステージ2へ遷移するようにすることで可能となります。なおゲームクリア機能の実装に関しては前回のここの記事で特集しています。とりあえず最初は簡単なところで、ステージ2になったら背景だけ変えるようにやってみます。スコア・スプライト
このゲームではスコア
スプライトが点数を計算し、画面遷移のイベントをコントロールするようにしていました。ゲームによっても作りかたは様々ですが、イベントを支配する司令塔のようなスプライトを集中的に一つに絞っておくと後々プログラムが拡張しやすいです。ここでは前回まではゲームのクリア条件であったところを、ステージ2
イベントを送信するように追加しておきます。今回はプログラム単純化のため変数スコア
が一旦ゼロリセットしますが、ゲームトータルで総得点を保持したい場合には別の仕組みが必要です。またこのときにステージも2に変えておきます。スコアボード・スプライト
スコアボード
のスプライト内で、ステージ2が始まったときに、ステージ1で利用していたパラメータを一旦リセットさせます。以下のように、ステージ2を受け取ったとき
イベントでステージ2の初期化を行わせます。今回は行いませんが、ステージ2で登場するアイテムなどを一新させるにはもうちょっと工夫が必要になります。おきばしょ・スプライト
ステージ2が始まった直後は、食べ物置き場に置いていたエサは一旦全て消去しますので、おきばしょ
のスプライト内でのステージ2を受け取ったとき
イベントの初期化は以下のようになります。これでステージが切り替わっても、食べ物のコスチュームが次の画面に持ち越されることはありません。背景
アイテムの選択画面から戻ってくるときにプレイモード
のイベントから背景を選択してきましたが、今回の変更で現在のステージ毎に正しい背景をセットする必要があります。そこでグローバル変数ステージ
を使って、ステージにあった背景を選択するようにします。また🚩が押されたとき
、ステージ1
、ステージ2
のイベントで適切に背景が切り替わるようにしています。他のスプライト
背景を色々と切り替わる種類が増えたことで、背景の名前
や背景の番号
に依存していたスプライトは影響を受けます。たとえば以下のように、背景の名前で判別していたものは、先程追加した背景でもプログラムが走るように修正します。ただし、ステージ数が多くなったり、画面の切り替えが複雑になってきたら、グローバル変数などでステージが今どこにセットされているのかを記録して使う工夫が必要になるかも知れません。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
まとめ
今回は画面遷移の実装手順のポイントに関してまとめてみました。ステージを遷移させるにはメッセージイベントを上手く利用して、走っているスクリプトを止めたり・開始したりしなければならないため、プログラムが大きければそれだけ大変になってきます。また、画面ごとの変数や画像などのリソースの管理も複雑になってきますので、慣れないうちは紙のメモ帳やノードブックなどに管理帳として書き留めながらゲーム開発をしてくと良いと思います。