スクラッチでスコアランキングの作り方(クラウド変数の使い方)

ゲーム作りのテクニック

今回つくるゲーム

難易度2 out of 5 stars

今回は、クラウド変数を活用してスクコアランキングを作る方法を学んでいきます。クラウド変数を活用することで、自分の作ったゲームで他の人とスコアを競い合えるようになりますので是非活用できるようになってください。今回は以前にブログで紹介したもぐらたたきゲームを題材にスコアランキングを作っていきます。

準備

まず、もぐらたたきゲームをはじめから作りたい人はこちらからチャレンジしてみてください
もぐらたたきゲームの作り方(初級)

スコアランキングの作り方だけを学習したい人はこちらをリミックスしてください
ビンゴおじさんたたき_ランキング(素材)
(もぐらたたきゲームを中級−2まで作った人も、新しい素材が必要なのでリミックスして開始してください。)

すでにもぐらたたきゲームが完成している状態で、もぐらたたきゲーム(中級−2)から”ランキング”のスプライトが追加されています。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)



リミックスの方法が分からないという方はこちらの記事を参考にしてください。

全体の流れを変える

ゲームの流れの中にランキングの表示を挟み込んでいきます。
これまでのゲームは以下のような流れで作られていました。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

ここに次のようにランキング画面を挟み込んでいきます。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

これまでは「ゲーム終了」のメッセージが送られるとリスタートに行ってましたが、ランキング表示にまず遷移して、「リスタート表示」のメッセージでリスタートに行きます。

これをコードで書いていきましょう。

まずは「ゲーム終了」のメッセージを受け取ってランキング表示をするようにしましょう。
ランキング表示のスプライトに以下のコードを書きます。このときスコア残り時間は隠しておきましょう。また、旗が押された時と、ゲームスタートを受け取った時にはこのスプライトを隠すようにしましょう。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

次にリスタートのスプライトに以下のコードを書いていきます。”ゲーム終了を受け取った時”の部分を”リスタート表示を受け取った時”に変更し、また、いままでは真ん中にドンと表示していましたが、表彰台の下に小さく表示したいので座標と大きさを指定します。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

これで、まず全体の流れを修正できました。
実際にゲームをしてみて、下の動画のような流れができれば成功です。

クラウド変数の概要

それではここから本題のクラウド変数の使い方に入っていきます。
今回はランキング1位、2位、3位を表示するようにしますが、みんながどんどんプレーしてスコアを更新していくので、この1位、2位、3位のスコアはそれにともないどんどん変化していきます。それを一箇所で管理するのがクラウド変数です。

下図のようにクラウド変数の中に1位、2位、3位のスコアが格納されていて、例えばAくんが80点を出すと、1位のスコアは90のまま変わりませんが、2位が80になり3位が70になります。このときAくんはランキング2位にランクインしたことになります
またBさんがその後に100点を出すと、1位が100になり、2位が90、3位が80となります。
もちろんBさんはこの時点でランキング1位です。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

また、1位と同じ点数をとったCくんはその時点で1位にランキングされ、1位と2位のスコアが同じになります。そしてDさんはAくんと同じ80点をとりましたが、この時点ではランク外になってしまいます。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)


クラウド変数を使おう

おおよそ概要がつかめたら、コードを書いていきます。まず1位・2位・3位のクラウド変数を作ります。いつもの変数を作る時と同じように、下図のようにコードの中にある”変数を作る”から入っていき、新しい変数名を指定していきます。今回は”1位”です。そしてその下の方にクラウド変数(サーバーに保存)というチェックボックスがあるので、そちらにチェックを入れてOKします。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)
スクラッチでスコアランキングの作り方(クラウド変数の使い方)

そうすると、変数のところに雲のマークの1位という変数ができたと思います。この雲のマークがクラウド変数になります。同様に2位・3位も作ります。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

このクラウド変数がどこに格納されているのか確認しましょう。プロジェクトページに移動すると、画面の下にクラウド変数(データを見る)というボタンが追加されていると思います。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

そしてこのボタンを押すと、下図のようにデータが現れます。まだ何の値も入っていないのですべて0になっています。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)



では、プログラムに戻ってこのクラウド変数を使ってコードを書いていきます。ランキングのスプライトに以下のコードを書いていきます。まずは大きな流れとして順位の変数は旗が押された時ゲームスタートを受け取った時には隠し、ゲーム終了後、ランキング更新が終了後に表示します。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

次にランキング更新を定義していきます。とても複雑に見えますがやっていることは単純で、スコアが暫定の1位と同じか高ければ、そのプレイヤーのスコアはランキング1位になります。
そして、2位の点数が3位に下がり、1位の点数が2位に下がり、このプレイヤーのスコアが1位になります。間違いなく順番にスコアを入れ替えていくためにそれぞれの指示の間に0.1秒間隔を入れています。(この順番が大切で、下から順番に変えていかないとおかしなことになってしまいます)

同様に、2位3位もやっていき、どれでもなければランク外ということになります。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

正しく動くか検証しよう

では、クラウド変数が正しく機能するか検証していきます。
緑の旗を押して、スタートボタンを押し、プレーしてみてください。検証用なのでまずは2回たたいて10点獲得しましょう。
すると、まずは1位に10が入り、ランキング1位になったことがわかります。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

見た目を整えていきます。1位・2位・3位の位置をそれぞれ表彰台の上にもってきて、右クリックを押して大きな表示に変更します。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)
スクラッチでスコアランキングの作り方(クラウド変数の使い方)

では続けて何回かプレーして検証します、5点、15点の順番でスコアを出すと、以下のようにロジック通りに点数が反映されていっているのがわかります。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)
スクラッチでスコアランキングの作り方(クラウド変数の使い方)

さらに、もう一度15点を出すと、こちらも正しく、1位・2位ともに15点となります。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

ここで、もういちどプロジェクトページに行ってクラウド変数のデータを見てみましょう。下図のようにどんどんデータが更新されていってるのが分かります。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

ためしに違うユーザからアクセスしてプレーしてみます。すると、下図のようにbingoojisanの他にkanettというユーザもスコアを更新していることがわかります。このようにしてみんなでスコアを更新していきます。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)

効果音を入れよう

最後に、ランクインした場合とランクインしなかった場合で効果音を出し分けます。
ランクインという変数を作って、デフォルトを1にして、ランクインしなかった場合に0にします。
そしてランクインが1の場合と0の場合で効果音を分けます。

スクラッチでスコアランキングの作り方(クラウド変数の使い方)
スクラッチでスコアランキングの作り方(クラウド変数の使い方)

以上で終了です。今回使ったコードはどんなゲームにも使えるので、使いまわしてみてください。
今回作ったコードはこちらからも確認できます。

ビンゴおじさんたたき_ランキング