【マリオ風アクションゲーム】19.ワールドランキング(TOP5)

2020年9月11日金曜日

Scratch スクラッチ プログラミング マリオ

t f B! P L

 

スクラッチでマリオ風のアクションゲームを作ってみる(その19)


19.ワールドランキング(TOP5)





作り方まとめページがあるよ→ 記事まとめ





クラウド変数を使ってトップ5までの世界ランキングを作ります。

クラウド変数はScratcherになっていないと使えないので、まだクラウド変数を使えない場合はこの記事を飛ばしてください。



Scratcherになるには、スクラッチを初めて一定期間と作品が一定数ないとダメみたいです。

わたしは、4作品ぐらいプロジェクトを作った状態で3,4か月ぐらいでお知らせが届きました。



今回やること:

  • ランキング用のクラウド変数をつくる(5位分まで)
  • ゲームオーバー時点の得点でランキングを更新する
  • 5位内にランクインしたらゲームオーバー画面で表示する
  • ステージがはじまるときにキャラクターにしゃべらせる





19-1:クラウド変数を作る


「キャラクター」スプライトを選択してコードを開きます。





「ブロック定義」の「ブロックを作る」ボタンを押して新しいブロックを作りましょう。

名前を  「得点ランキング」にします。





次に、いつもの変数を作ります。

「変数」の「変数を作る」ボタンを押して新しい変数を作りましょう。

名前を  「ランクイン」にします。





「得点ランキング」ブロックに次のコードを追加しましょう。


「(ランクイン)を(0)にする」




「はじめからスタート」ブロックを見つけましょう。

「次のステージへ」ブロックの上に次のブロックを追加します。


「(ランクイン)を(0)にする」







ここから、クラウド変数を作ります。

「変数」の「変数を作る」ボタンを押して新しい変数を作りましょう。

その時、「クラウド変数(サーバーに保存)」にチェックを入れます。


次の 5つのクラウド変数を作ります。


「1st」
「2nd」
「3rd」
「4th」
「5th」



※ 同じように名前をかえて残りの4つも作ります



変数を画面に表示するチェックを入れておきましょう。





変数の画面上の表示位置を調整します。





「はじめからスタート」ブロックを見つけましょう。

「(ランクイン)を(0)にする」の下に次のブロックを追加します。


「変数(1st)を隠す」
「変数(2nd)を隠す」
「変数(3rd)を隠す」
「変数(4th)を隠す」
「変数(5th)を隠す」






「停止画面」スプライトを選択してコードを開きましょう。





「ゲームオーバー」ブロックを見つけましょう。

「コスチュームを(ゲームオーバー)にする」ブロックの下に次のブロックを追加します。


「変数(1st)を表示する」
「変数(2nd)を表示する」
「変数(3rd)を表示する」
「変数(4th)を表示する」
「変数(5th)を表示する」






実行してみましょう。




「ゲームオーバー」画面でランキングを表示する準備ができました。





19-2:得点のランキングを更新する


「キャラクター」スプライトを選択してコードを開きます。





「得点ランキング」ブロックを見つけましょう。

「(ランクイン)を(0)にする」ブロックの下に次のブロックを追加します。


「もし「(得点)<(5th)」なら」

    「(ランクイン)を(-1)にする」




※ ↑は5位以内にランクインできなかったときの処理



次に、5位にランクインした時の処理を追加します。

次のブロックを追加しましょう。


「もし「「(ランクイン)=(0)」かつ「(得点)<(4th)」」なら」

    「(ランクイン)を(5)にする」

    「(5th)を(得点)にする」






次に、4位にランクインした時の処理を追加します。

次のブロックを追加しましょう。


「もし「(ランクイン)=(0)」なら」
    「(5th)を(4th)にする」
    「もし「(得点)<(3rd)」なら」
        「(ランクイン)を(4)にする」
        「(4th)を(得点)にする」




    


次に、3位にランクインした時の処理を追加します。

次のブロックを追加しましょう。


「もし「(ランクイン)=(0)」なら」
    「(4th)を(3th)にする」
    「もし「(得点)<(2nd)」なら」
        「(ランクイン)を(3)にする」
        「(3th)を(得点)にする」







次に、2位にランクインした時の処理を追加します。

次のブロックを追加しましょう。


「もし「(ランクイン)=(0)」なら」
    「(3rd)を(2nd)にする」
    「もし「(得点)<(1st)」なら」
        「(ランクイン)を(2)にする」
        「(2nd)を(得点)にする」







次に、1位にランクインした時の処理を追加します。

次のブロックを追加しましょう。


「もし「(ランクイン)=(0)」なら」
    「(2nd)を(1st)にする」
    「(ランクイン)を(1)にする」
    「(1st)を(得点)にする」






得点ランキングの処理を、ゲームオーバーするところ

・ダメージ5回うける
・時間切れ

の2か所に入れていきます。




「(キャラクターにダメージ)を受け取ったとき」ブロックを見つけましょう。

「タイマーをリセット」の下に次のブロックを追加します。


「得点ランキング」






「(キャラ移動)を受け取ったとき」ブロックを見つけましょう。

「タイマーをリセット」ブロックの下に次のブロックを追加します。


「得点ランキング」






実行してみましょう。









19-3:ランクインした順位を表示する


「停止画面」スプライトを選択してコスチュームを開きましょう。





新しいコスチュームを作ります。





コスチュームの名前を  「ゲームオーバー1st」にしましょう。





1位にランクインしたときの画面を好きなように描いてみましょう。





同じように、2位用の新しいコスチュームを作ります。

新しいコスチュームを作ってもいいですが、
同じような画像であれば 「複製」を使ってみましょう。





名前を  「ゲームオーバー2nd」にしましょう。





2位にランクインした時の画面を作ります。





同じように3位、4位、5位を作っていきます。

3位の名前: 「ゲームオーバー3rd」
4位の名前: 「ゲームオーバー4th」
5位の名前: 「ゲームオーバー5th」












「停止画面」スプライトのコードに切り替えましょう。


「ゲームオーバー」ブロックを見つけます。

「コスチュームを(ゲームオーバー)にする」ブロックの下に次のブロックを追加しましょう。


「もし「(ランクイン)=(5)なら」
    「コスチュームを(ゲームオーバー5th)にする」
「もし「(ランクイン)=(4)なら」
    「コスチュームを(ゲームオーバー4th)にする」
「もし「(ランクイン)=(3)なら」
    「コスチュームを(ゲームオーバー3rd)にする」
「もし「(ランクイン)=(2)なら」
    「コスチュームを(ゲームオーバー2sd)にする」
「もし「(ランクイン)=(1)なら」
    「コスチュームを(ゲームオーバー1st)にする」






実行してみましょう。








19-4:ステージ開始時に「キャラクター」がしゃべる


ステージ開始時に得点が 1st より低ければ 「がんばれ!」

高ければ 「すごい!」  を「キャラクター」にしゃべらせます。



「キャラクター」スプライトを選択してコードを開きます。





「次のステージへ」ブロックを見つけましょう。

一番下に次のコードを追加しましょう。


「もし「(得点)<(1st)」なら」
    「(がんばれ!)と言う」
「でなければ」
    「(すごい!)と言う」





「(キャラ移動)を受け取ったとき」ブロックを見つけましょう。

「(時間切れ)を(-1)ずつ変える」ブロックの下に次のコードを追加します。


「もし「(時間切れ)<(1770)」なら」
    「()と言う」






実行してみましょう。








19-5:ランキングソート


ランキングの得点が上位から降順になるように並び替えます。

バブルソートという簡単な方法でやってみます。


「キャラクター」スプライトを選択してコードを開きましょう。




「ブロック定義」の「ブロックを作る」ボタンを押して、新しいブロックを作ります。

名前を  「ランキングソート」にしましょう。





作った 「ランキングソート」ブロックに次のブロックを追加します。


「(4)回繰り返す」

※ 繰り返す回数は、ランク数ー1回 を指定します。





次に 1st より 2nd の得点が高い 場合は入れ替えます。

次のブロックを繰り返しの中に追加しましょう。



「もし((2nd)>(1st)なら」
    「(変数)を(1st)にする」
    「(1st)を(2nd)にする」
    「(2nd)を(変数)にする」





同じように、2st より 3rdの得点が高い 場合は入れ替えるブロックを追加します。


「もし((3rd)>(2nd)なら」
    「(変数)を(2nd)にする」
    「(2nd)を(3rd)にする」
    「(3rd)を(変数)にする」







同じように、3rd より 4thの得点が高い 場合は入れ替えるブロックを追加します。


「もし((4th)>(3rd)なら」
    「(変数)を(3rd)にする」
    「(3rd)を(4th)にする」
    「(4th)を(変数)にする」







同じように、4th より 5thの得点が高い 場合は入れ替えるブロックを追加します。


「もし((5th)>(4th)なら」
    「(変数)を(4th)にする」
    「(4th)を(5th)にする」
    「(5th)を(変数)にする」






「はじめからスタート」ブロックを見つけましょう。

「次のステージへ」ブロックの上に次のブロックを追加します。


「ランキングソート」




これでランキングの並び替えが完了です。







19-6:やってみよう


ステージ開始時にだす「キャラクター」の吹き出しを

1st より得点が低いときは、「1stまで○点だよ」 と言うようにしてみよう。

○には 1st までの 得点 の数字がはいるよ。



ヒント:

文字をつなげるには、

「演算」の「(りんご)と(バナナ)」ブロックを使おう。






今回作ったのは、こういう感じになるよ → マリオ風ゲーム:Step19(ランキング)

プロジェクトが作れなかった場合は、動きだけでも見てみてね。




他の作品記事もよければ読んでみてください。


このブログを検索

ブログをよくする

自己紹介

自分の写真
はじめまして。はるはるです。 中2の息子と小5の娘を抱える2児の父です。今はゲーム会社で働いています。 子供のプログラミング学習に協力できるように教え方を勉強中です。 このブログでは簡単なゲームを作りながら自分が学んだことを少しずつ共有していきます。 情報処理の試験をたまに受けます。 第二種情報処理技術者 ソフトウェア開発技術者 基本情報処理技術者 応用情報処理技術者 twitter: https://twitter.com/amaruchan007

連絡フォーム

名前

メール *

メッセージ *

ブログ アーカイブ

QooQ