SCRATCHをやってみた!49(最高得点者の一覧を表示する:一覧の作り方を考える)

前回、ゲーム終了時にハイスコアを出した人たちの一覧を表示する方法をスクリプトにしていきました。
今回は、その続きをやりましょう。

前回は途中で終わってしまいました。。。

前回は必要な変数やリストを作って終わりました。
実はその後、”得点”をリストの得点と比較して、どこの順序に入れるか探して、、、というところを考えていたのですが、2つ条件を考える必要があったので、一旦保留としました。
では、どこに入れるか探すところを考えてみましょう。

入れる順序を探すときの”得点”を”得点一覧”の値と比較する回数

先ず、”得点一覧”リストの中を探すので、”得点一覧”を最初から順番に”得点”と比較していくことにします。
ゲームを一番最初にしたときは、”得点一覧”には何も入っていませんので、比較せず終わります。
次に2番目にゲームをした人の場合、”得点一覧”には1つ入っているので、その1つと比較して終わります。
3番目ですと、”得点一覧”には2つ入っているので、その2つと比較して終わります。
“得点一覧”は、最大5つ入れるので、最大5回(=”得点一覧”の長さ)比較することになります。
この時、”リスト位置”を比較する”得点一覧”の位置にすれば、”リスト位置”が1から”得点一覧”の長さまで増やして、その中で”得点一覧”の値を比較することにでできます。

“得点”を”得点一覧”の値と比較する:比較符号などはどうなるのか

ここでは、ハイスコア(=得点)が今までのハイスコア以上なら一覧に加えることにします。
なお、SCRATCHでは”以上”にあたる演算がないので、組み合わせて作ります。
そう、以前に作りましたが、<< >ではない>と<[ ]>[ ]>を組み合わせ、<<[ ]>[ ]>ではない>とします。
この比較演算を用いて<<[得点]>[([リスト位置]番目の[最高得点者一覧▼])]>ではない>となります。

では両方を組み合わせると?

SCRATCHの条件付き繰り返しのブロックは「< >まで繰り返す」です。
これを上の2つを組み合わせると次のような条件になります。

  • <[リスト位置]>[[最高得点者一覧▼]の長さ]>
  • または、<<[得点]>[([リスト位置]番目の[得点一覧▼])]>ではない>

この条件が正しくなるまで”リスト位置”を1つずつ増やしていくことなります。

探した後は?

探した後は、”リスト位置”がハイスコアを記録した人を挿入する位置になっているので、これを頼りに”得点”と”最高得点者”をそれぞれ”得点一覧”と”最高得点者一覧”に入れます。
なお、5つまでになっているので、”リスト位置”が5より大きい時には何もしないことになります。

“最高得点者一覧”に入れる内容

“最高得点者一覧”に入れる内容は、”最高得点者”と”得点”です。
ただし、”最高得点者”の文字制限(10文字以内)と得点との間に区切りをつけることにしましょう。
そうしないと”最高得点者”の名前に数字があると得点と間違えてしまう可能性があるためです。

文字制限の方法はどうするか

SCRATCHには文字を1つずつ取り出す以外に方法はないようです。
そこで、ループ用の変数と文字用変数を作って、”最高得点者”から一文字づつ取り出して文字用変数に入れてから、”最高得点者一覧”に追加していくことにしましょう。
なお、得点とその区切り記号も文字用変数に追加して”最高得点者一覧”に入れるようにしましょう。

今回はここまで。
次回をお楽しみに。

☆前回はSCRATCHをやってみた!48でした。
☆次回はSCRATCHをやってみた!50です。

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