【Scratchで簡単なゲーム作成編②】スコアボードの作成と得点の表示


※ 当ページには【広告/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 の基本的な機能は出来上がっているのですが、まだまだこれからプレーヤーの遊び心をくすぐる仕掛けを盛り込んでいく予定です。
次回以降の別の記事へ続きます。