【スクラッチ】クラウド変数を使ってランキングゲームを作ってみよう

ブロックの応用テクニック
Scratch星人
Scratch星人

以前の記事でクラウド変数の使い方を紹介しました。

この記事では、クラウド変数の数を増やして、ランキング表示機能を追加する方法を解説します。

ゲームがさらに楽しくなりますよ!

クラウド変数って何?というあなたは、まずは下の記事を読んでみて下さいね!

作成するゲーム

今回の目的は「ランキング機能」なので、ゲームそのものはシンプルなものにしてみようと思います。

内容は、以下の通りです。

  • 表示された6桁の数字を入力する速さを競うゲーム
  • 間違った入力の場合はもう一度やり直し
  • 5位までのランキングを表示

まずは、ゲームのコードをネコのスプライトに設定します。
特に難しいことはやっていないので、画像の通り作ってみて下さい。

注目して欲しいポイントは「もし~でなければ」を使って、正しい答えなら次の画面(順位)へ進み、間違った答えなら「出題」を送って、初めの状態に戻していることです。

ランキング機能の作成

上の画像が、作成した全ての変数です。

あれ?と思ったあなたは鋭いです!
そうです。リストを使っています。

リストを使った理由はコードが分かりやすくなるからです。
(リスト無しでもゲームを作ることは可能だと思います)

それではコードを作成していきます。
まずは「スタート設定」を作りますが、ステージのコードとして設定してみましょう。

クラウド変数からデータを取得したものを一旦リストに格納します。

「出題」を送るとゲームが実行され、結果「順位」が送られてくるので、受け取ったコードを以下のように設定します。

これだけ見ると難しそうに見えますが、やっていることは簡単です。

入力に掛かった時間「タイム」がリストに格納されている変数と比べてどうかを調べています。

今回は、処理が複雑になってしまうという理由から、同タイムは無視することにしています。

2位より遅いけど、3位より速い場合は、3位のところにタイムが格納されるようになります。

ここでリストを使った恩恵を感じることが出来ます。

3位の格納されたのはいいけど、これまで3位に格納されていた数字はどこに行ってしまうのでしょう。。?

そうです!
自動的に4位にズレてくれるんです。

この処理をリストを使わずにやろうとするとかなり大変になると思います。

次に、上のコードに続けて「クラウド変数」への格納を行うコードを作成します。

ランキングの6番目を削除しているのは、リストがどんどん増えていくのを防ぐためです。

本当なら、100位までのランキングなども作成してみたいですが、スクラッチではクラウド変数は10個までと決まっているようなので、クラウド変数を5つ、リストの中身も5つにして、分かりやすくしています。

クラウド変数のトラブル

残念ながら、クラウド変数は、おかしな挙動(バグ?)が発生することがあります。

今回作ったゲームで言うと、2位~5位のクラウド変数の値が「0」になってしまう事があります。

そのため、万が一に備えて「リセットボタン」のようなものを作成しておくことをおすすめします。

ただし、これまでのクラウド変数が上書きされて消えてしまうので、本当にリセットしたい時以外は使わないようにしましょう。

この「リセット」機能ですが、ゲームを作成してすぐの初めの1回だけは使用する必要があります。

理由はクラウド変数の初期値が「0」だからです。

今回のゲームは速さを競うのもですが、0秒より速いなどという事はあり得ません。
そこで、リセットをして、事前に適当な数値を入れてあげる必要があります。

完成したゲーム

スマホからではゲームの操作性が悪いので、パソコンもしくはタブレットでお試しください。

まとめ

クラウド変数を使ったランキングゲームを作成してみました。

「ここまで同じように作ってきたけど、思ったように動かない」ということも、もしかしたらあるかもしれません。

そんな時は、コードをひとつひとつ見ながら意味や流れ、変数の受け渡しなどをしっかり確認してみましょう。

この記事を読んでいるあなたは、すでにスクラッチ初心者ではないはずですので、きっと分かるはずです。

落ち着いてコードを見ることで、今後の成長にきっと繋がっていきます。
楽しみながら頑張りましょう(*^▽^*)

コメント

タイトルとURLをコピーしました