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


※ 当ページには【広告/PR】を含む場合があります。
2020/09/04
【Scratchで簡単なゲーム作成編①】プレイモードとセレクトモードの画面の切替
【Scratchで簡単なゲーム作成編③】スプライトのコピーとゲーム機能の拡張

前回 | Scratchで簡単なゲーム作成編① ~ プレイモードとセレクトモードの画面の切替に引き続きゲームとしての機能を盛り込んでいきます。

合同会社タコスキングダム|タコキンのPスクール
【Scratchで簡単なゲーム作成編①】プレイモードとセレクトモードの画面の切替

Scratchで画面の切り替えについてのお話を中心に勉強していきます。

今回の内容までの変更を反映させたゲームのサンプルは以下のようになります。この記事では、スコアボードの作り方を中心に解説していきます。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

スコアボード?

ゲームでは得点を記録・表示をする部分がプレーヤーの見やすいと思われる位置に貼り付けられています。通常は画面の隅っこに置かれるのが多いと思います。

合同会社タコスキングダム|タコキンのPスクール

前回までのプログラムでは、たこがエサ置き場におかれた物を食べると、その食べ物が消えるだけでしたが、今回は食べたもの(りんごかタコ)で得点が入るようにしました。

ひとまず得点ルールとして、りんごを食べると1個につき1点、タコを食べると1個につき5点が加算されます。

メガネのアイコンには、プレー中にタコの食べた総得点が表示されます。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

材料の準備

まずはプログラミングを始める前に、素材の準備からやっていきます。

スプライト

前回のプログラムから変更のあったスプライトのみを説明していきます。

前回から変更や追加のあったスプライトは以下の図のものです。

合同会社タコスキングダム|タコキンのPスクール

それぞれの変更点は、

            
            + おきばしょ > コスチュームを変更
+ スコア > 新規追加
+ りんごのかず > 新規追加
+ タコのかず > 新規追加
+ スコアボード > 新規追加
        
となっています。

おきばしょスプライトの1番目のコスチュームはただの四角い図形だったのをやめて、さらという名前でお皿の画像に変更しました。

合同会社タコスキングダム|タコキンのPスクール

また、新しく追加した
スコア/りんごのかず/タコのかず/スコアボードスプライトには、以下のようなコスチュームを準備します。

合同会社タコスキングダム|タコキンのPスクール

スコアを表示するスプライトには、数字のコスチュームをそれぞれ登録してあります。数字とコスチュームの順番を合わせると見やすくなります。

変数

変数も今回新しく追加したものだけをあげると以下のようになります。

合同会社タコスキングダム|タコキンのPスクール

            
            + クローンスコア:
    スコアのスプライトの現在のクローンの数(※後述)
+ クローンタコ:
    タコのかずのスプライトの現在のクローンの数(※後述)
+ クローンりんご:
    りんごのかずのスプライトの現在のクローンの数(※後述)
+ スコア:
    現在の得点の値を記録する
+ たべたタコ:
    現在の食べたタコの総数を記録する
+ たべたりんご:
    現在の食べたリンゴの総数を記録する
        

ローカル変数

そのスプライトか背景だけの専用として使える変数を
ローカル変数といいます。

ローカル変数を使うと、そのローカル変数を設定したスプライト1つだけに限定されて、他のスプライトではその値を共有して使うことができなくなります。

合同会社タコスキングダム|タコキンのPスクール

スコアを表示する
スコア/りんごのかず/タコのかずスプライトは個別に数字を処理して表示する際に、他のスコア表示に影響を与えないようにローカル変数クローン_を利用しています。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

ブロックコーディング

以上で材料が揃ったので、次にブロックを組み立てていきます。

スコアボードの配置

まずは
スコアボートスプライトを右上に配置します。

合同会社タコスキングダム|タコキンのPスクール

そのスコアボートの上に、
スコア/りんごのかず/タコのかずスプライトを間隔を空けて配置していきます。

では先に
スコアボートスプライトからプログラミングブロックを作っていきます。

初期化の処理ですが、変数
スコア/たべたりんご/たべたタコがそれぞれの値を記録して、スコアボートに表示される数字になります。ゲームスタート時に、これらの変数をここで一旦ゼロにしておきましょう。

合同会社タコスキングダム|タコキンのPスクール

またゲームスタート時に、スコアボートを手前から10層奥に下げます。層が手前になるスプライトほど、上に表示されますので、とりあえず今は
スコアボートは手前から10層下にあることをどこかにメモをとって覚えておくと良いでしょう。

幽霊の効果は、画像を透明にする強さを表す値で、0~100までが指定できます。0の場合には薄くならない状態から100で完全に透明になります。

たこが画面の上に入り込んでも薄くみえるように、スコアボートの幽霊効果は40~70くらいにしとくと良いでしょう。

次に新しく
たべたイベントメッセージを作成し、たべたを受け取ったときブロックから、イベントを処理するブロックを作ります。

合同会社タコスキングダム|タコキンのPスクール

変数
たべもの?には、エサ置き場に置かれている食べ物の種類が記録されていたので、たこが食べ物を食べたときに、その食べ物を判別して、変数スコア/たべたりんご/たべたタコをそれぞれ計算しなおしています。

スコアの計算が終わったら、
たべもの?からっぽの値にしておきます。

クローン(分身体)による文字表示

今回の内容で最も使いこなすのが難しいであろうテクニックが、
クローンです。スプライトの持っている、いわゆる分身の術です。

このテクニックを使えるようになると、スクロールアクションゲームのような、たくさんの敵や障害物を表示させるときにも利用できるので、グッとゲームらしいゲームが作れるようになります。

まず
スコアスプライトのブロックプログラミングから説明していきます。

最初に変数
クローンスコアという値がありますが、ゼロにしてからループ処理を始めているブロック部分が下の図です。

合同会社タコスキングダム|タコキンのPスクール

変数
クローンスコアには、現在の得点の文字数を記録しています。例えばスコアが12のときは文字数2でクローンスコア = 2、436のときはクローンスコア = 3、9のときはクローンスコア = 1などです。ちなみに0のときは一文字なのでクローンスコア = 1になります。クローンスコアの計算は図中の四角で囲った1の部分で行っています。

またこの1の部分で、
自分のクローンを作るによりスプライトの分身体が、得点の文字数だけ作成されています。

ブロックの後半の2の部分はクローンスコア(得点の文字数)に応じて、得点を表示させる場所も少し修正できるようにしています。

さて、ただクローンしただけでは同じ場所に分身たちが重なって置かれるだけですので、分身体を本体のスプライトからそれぞれの座標にずらしてあげる必要があります。そんなときに使うのが
クローンされたときイベントです。

このイベントはスプライトがクローンされるたびに起こるため、クローンひとつひとつをどこかの座標へ移したり、効果を付けてみたりと、個別の設定を与えることができます。

そのため、このスプライトだけが自分の分身体の数を覚えておけるように、スプライト専用のローカル変数
クローン_を使った処理を行う必要があります。

ローカル変数は、対象のスプライトを選んで
[変数]の項目 > [変数を作る]ボタンからこのスプライトのみを選んで作成します。

合同会社タコスキングダム|タコキンのPスクール

クローンされたときのプログラミングブロックは以下です。

合同会社タコスキングダム|タコキンのPスクール

変数
クローンスコアから得点の文字数を一旦ローカル変数クローン_にコピーし、変数スコアの文字をひとつひとつ読み出しながら、その文字に応じて分身体に数字のコスチュームに変化させ、位置をずらしてからスコア表示させることができるプログラムになっています。

表示がどうなるかテストするには、ゲームスタート実行後に
スコアを***にするだけのブロックに値を入れてクリックすることで、どのように表示されるかを確認できます。

合同会社タコスキングダム|タコキンのPスクール

満足な表示になるまで、プログラミングブロックの座標などを調整していきながらプログラミングすると良いです。

数字の表示のやり方は他のスプライトも共通ですので、残りの
りんごのかず/タコのかずスプライトにもほぼ全く同じプログラミングブロックを用いることができます。ですので、これらのスプライトのプログラミングの説明は省きます。

合同会社タコスキングダム|タコキンのPスクール

"たべた"ときのイベント

スコアを更新するためには、たこが食べ物を食べたことを使えるメッセージイベントを各スプライトに送信する必要があります。

おきばしょのスプライトの
さわった1メッセージイベントのブロック部分に、たべたを送るブロックを挿入してあげると、たこが食べ物を食べたというイベントが発生させることができます。

合同会社タコスキングダム|タコキンのPスクール

以上で、ゲームをプレイ中にスコアを表示させるための簡単なスコアボードが完成しました。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

まとめ

スコアボードを付けると、よりゲームらしさが出てきたと思います。

今回でプログラミングの参考にさせていただいている
Pixel Town Remasterの基本的な機能は出来上がっているのですが、まだまだこれからプレーヤーの遊び心をくすぐる仕掛けを盛り込んでいく予定です。

次回以降の別の記事へ続きます。