※ 当ページには【広告/PR】を含む場合があります。
2020/09/04
【Scratchで簡単なゲーム作成編①】プレイモードとセレクトモードの画面の切替
【Scratchで簡単なゲーム作成編③】スプライトのコピーとゲーム機能の拡張
前回 | Scratchで簡単なゲーム作成編① ~ プレイモードとセレクトモードの画面の切替に引き続きゲームとしての機能を盛り込んでいきます。【Scratchで簡単なゲーム作成編①】プレイモードとセレクトモードの画面の切替Scratchで画面の切り替えについてのお話を中心に勉強していきます。
今回の内容までの変更を反映させたゲームのサンプルは以下のようになります。この記事では、スコアボードの作り方を中心に解説していきます。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
スコアボード?
ゲームでは得点を記録・表示をする部分がプレーヤーの見やすいと思われる位置に貼り付けられています。通常は画面の隅っこに置かれるのが多いと思います。前回までのプログラムでは、たこがエサ置き場におかれた物を食べると、その食べ物が消えるだけでしたが、今回は食べたもの(りんごかタコ)で得点が入るようにしました。ひとまず得点ルールとして、りんごを食べると1個につき1点、タコを食べると1個につき5点が加算されます。メガネのアイコンには、プレー中にタコの食べた総得点が表示されます。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
材料の準備
まずはプログラミングを始める前に、素材の準備からやっていきます。スプライト
前回のプログラムから変更のあったスプライトのみを説明していきます。前回から変更や追加のあったスプライトは以下の図のものです。それぞれの変更点は、となっています。おきばしょ
スプライトの1番目のコスチュームはただの四角い図形だったのをやめて、さら
という名前でお皿の画像に変更しました。また、新しく追加したスコア
/りんごのかず
/タコのかず
/スコアボード
スプライトには、以下のようなコスチュームを準備します。スコアを表示するスプライトには、数字のコスチュームをそれぞれ登録してあります。数字とコスチュームの順番を合わせると見やすくなります。変数
変数も今回新しく追加したものだけをあげると以下のようになります。ローカル変数
そのスプライトか背景だけの専用として使える変数をローカル変数
といいます。ローカル変数を使うと、そのローカル変数を設定したスプライト1つだけに限定されて、他のスプライトではその値を共有して使うことができなくなります。スコアを表示するスコア
/りんごのかず
/タコのかず
スプライトは個別に数字を処理して表示する際に、他のスコア表示に影響を与えないようにローカル変数クローン_
を利用しています。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
ブロックコーディング
以上で材料が揃ったので、次にブロックを組み立てていきます。スコアボードの配置
まずはスコアボート
スプライトを右上に配置します。そのスコアボートの上に、スコア
/りんごのかず
/タコのかず
スプライトを間隔を空けて配置していきます。では先にスコアボート
スプライトからプログラミングブロックを作っていきます。初期化の処理ですが、変数スコア/たべたりんご/たべたタコ
がそれぞれの値を記録して、スコアボートに表示される数字になります。ゲームスタート時に、これらの変数をここで一旦ゼロにしておきましょう。またゲームスタート時に、スコアボートを手前から10層奥に下げます。層が手前になるスプライトほど、上に表示されますので、とりあえず今はスコアボートは手前から10層下
にあることをどこかにメモをとって覚えておくと良いでしょう。幽霊の効果
は、画像を透明にする強さを表す値で、0~100までが指定できます。0の場合には薄くならない状態から100で完全に透明になります。たこが画面の上に入り込んでも薄くみえるように、スコアボートの幽霊効果は40~70くらいにしとくと良いでしょう。次に新しくたべた
イベントメッセージを作成し、たべたを受け取ったとき
ブロックから、イベントを処理するブロックを作ります。変数たべもの?
には、エサ置き場に置かれている食べ物の種類が記録されていたので、たこが食べ物を食べたときに、その食べ物を判別して、変数スコア/たべたりんご/たべたタコ
をそれぞれ計算しなおしています。スコアの計算が終わったら、たべもの?
はからっぽ
の値にしておきます。クローン(分身体)による文字表示
今回の内容で最も使いこなすのが難しいであろうテクニックが、クローン
です。スプライトの持っている、いわゆる分身の術です。このテクニックを使えるようになると、スクロールアクションゲームのような、たくさんの敵や障害物を表示させるときにも利用できるので、グッとゲームらしいゲームが作れるようになります。まずスコア
スプライトのブロックプログラミングから説明していきます。最初に変数クローンスコア
という値がありますが、ゼロにしてからループ処理を始めているブロック部分が下の図です。変数クローンスコア
には、現在の得点の文字数を記録しています。例えばスコアが12のときは文字数2でクローンスコア = 2
、436のときはクローンスコア = 3
、9のときはクローンスコア = 1
などです。ちなみに0のときは一文字なのでクローンスコア = 1
になります。クローンスコアの計算は図中の四角で囲った1の部分で行っています。またこの1の部分で、自分のクローンを作る
によりスプライトの分身体が、得点の文字数だけ作成されています。ブロックの後半の2の部分はクローンスコア(得点の文字数)に応じて、得点を表示させる場所も少し修正できるようにしています。さて、ただクローンしただけでは同じ場所に分身たちが重なって置かれるだけですので、分身体を本体のスプライトからそれぞれの座標にずらしてあげる必要があります。そんなときに使うのがクローンされたとき
イベントです。このイベントはスプライトがクローンされるたびに起こるため、クローンひとつひとつをどこかの座標へ移したり、効果を付けてみたりと、個別の設定を与えることができます。そのため、このスプライトだけが自分の分身体の数を覚えておけるように、スプライト専用のローカル変数クローン_
を使った処理を行う必要があります。ローカル変数は、対象のスプライトを選んで[変数]の項目 > [変数を作る]ボタン
からこのスプライトのみ
を選んで作成します。クローンされたときのプログラミングブロックは以下です。変数クローンスコア
から得点の文字数を一旦ローカル変数クローン_
にコピーし、変数スコア
の文字をひとつひとつ読み出しながら、その文字に応じて分身体に数字のコスチュームに変化させ、位置をずらしてからスコア表示させることができるプログラムになっています。表示がどうなるかテストするには、ゲームスタート実行後にスコアを***にする
だけのブロックに値を入れてクリックすることで、どのように表示されるかを確認できます。満足な表示になるまで、プログラミングブロックの座標などを調整していきながらプログラミングすると良いです。数字の表示のやり方は他のスプライトも共通ですので、残りのりんごのかず
/タコのかず
スプライトにもほぼ全く同じプログラミングブロックを用いることができます。ですので、これらのスプライトのプログラミングの説明は省きます。"たべた"ときのイベント
スコアを更新するためには、たこが食べ物を食べたことを使えるメッセージイベントを各スプライトに送信する必要があります。おきばしょのスプライトのさわった1
メッセージイベントのブロック部分に、たべたを送る
ブロックを挿入してあげると、たこが食べ物を食べたというイベントが発生させることができます。以上で、ゲームをプレイ中にスコアを表示させるための簡単なスコアボードが完成しました。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
まとめ
スコアボードを付けると、よりゲームらしさが出てきたと思います。今回でプログラミングの参考にさせていただいているPixel Town Remasterの基本的な機能は出来上がっているのですが、まだまだこれからプレーヤーの遊び心をくすぐる仕掛けを盛り込んでいく予定です。次回以降の別の記事へ続きます。