完成品の確認
準備をしよう
下のURLをクリックして、アーケードを開いてください。
https://arcade.makecode.com/S57509-05983-17599-91640
出てきた画面の上にある「Edit Code」ボタンを押して、プロジェクトを開いてください。
プログラミングする
初めの設定
スプライトの設定
まずは、メインプレイヤーとして「勇者」を出して、以下の設定をします。
・スプライトの設定
・位置の設定
・上下左右に動かす
以下のようにブロックを入れて下さい。
スプライトの設定については、別の記事で詳しく解説しています。
タイルマップの設定
今回は、タイルマップを使います。
タイルマップの設定については、別の記事で詳しく解説しています。
地面として画面の下方に木のタイルを並べたようなステージを作ります。
以下のように作って下さい。
スコアとカウントダウン
このゲームのルールは、制限時間内にどれくらいスコアを上げるか、というものです。スコアとカウントダウンを設定します。スコアを「0」に初期化、カウントダウンを「20」から始めるようにします。
ゲームの設定に関するブロックは、カテゴリ「情報」に入っています。
以下のようにブロックを入れて下さい。
カウントダウン(中央)とスコア(右)の数値が画面に出てきます。
プログラム確認
「▶」を押して、動きを確認してください。以下が確認できればOKです。
- 「勇者」が画面中央下に登場する
- 「勇者」を上下左右キーで動かせる
- 木のタイルが画面下に並んでいる
- スコアの「0」が画面右上に出ている
- カウントダウンの「20」が画面中央上に出ている
初めの設定は、これで完成です。
りんごが上から落ちてくる
ずっと繰り返す
同じ処理をずっと繰り返すには、カテゴリ「ループ」の「ずっと」ブロックを使います。
そのまま使うと、処理が速すぎるので、「一時停止」ブロックを一緒に使います。
一時停止の間隔は、以下のように変更して「1秒間」にしておきます。
りんごが上から落ちてくる
プロジェクタイルとして、りんごを作成します。タイプは、「Food」にしておきます。
りんごは1秒ごとに、どんどん作成されるようにしたいので、先ほどの繰り返しの中に入れます。
プロジェクタイルの設定については、別の記事で詳しく解説しています。
プロジェクタイルに速度を設定するだけで、下に落ちる動きが作れます。
りんごの位置について、高さは一定の場所でよいですが、横方向に位置は、1つ1つちがう場所に設定したいので、「ランダム」で数値を設定します。
ランダムの数値を作るには、カテゴリ「計算」にある「〇から〇まで」ブロックを使います。
このブロックを、以下のように入れて下さい。
画面の左端が x=0、右端が x=160にすることで、その間のランダムな数値が取れるように設定しています。
プログラム確認
「▶」を押して、動きを確認してください。以下が確認できればOKです。
- りんごが上から1秒ごとに出てくる
- 1つずつ横の位置が異なっている
- 下の木のタイルに当たったら消える
りんごが上から落ちてくるところは、これで完成です。
りんごをキャッチできる
勇者がりんごに触れたときに、スコアが上がって消えるようにします。
カテゴリ「スプライト」の「重なり」にある「スプライトが別のスプライトと重なったとき」ブロックを出します。
これは、スプライトやプロジェクタイルが重なったときに何かをするブロックですが、「タイプ」を設定するようになっています。指定したタイプどうしが重なったときに、動くブロックです。
ここでは、「Player」タイプと「Food」タイプにしておきます。
カテゴリ「音楽」の「音」にある、以下のブロックを出します。
音の種類を、以下のように選びます。(バンバン)
音の鳴らし方を、以下のように選びます。「in background」にします。
- until done: 鳴り終わってから、次のブロックに進む
- in background: 鳴り終わる前に(鳴りながら)、次のブロックに進む
カテゴリ「スプライト」の「エフェクト」にある「destroy〇」ブロックを出します。
上記のブロックを、以下のように入れて下さい。
「destroy〇」ブロックは、〇に選んだものを破壊するブロックです。
「重なったとき」ブロックの「otherSprite」は、重なった方のスプライト(りんご)を指すので、これを「destroy」の〇に入れます。
プログラム確認
「▶」を押して、動きを確認してください。以下が確認できればOKです。
- 勇者がりんごに触れると、音が鳴ってスコアが1上がり、りんごが消える
りんごをキャッチするところは、これで完成です。
ゲームの終了
今回は、ゲームクリア・オーバーはなく、ゲーム終了してスコアを競うものです。この場合、「game over」ブロックは使えません。
「game over」ブロックは、ダイアログやテキスト、効果音がもともと組み合わされた便利なブロックでしたが、使わない場合は次のように作っていきます。
カテゴリ「ゲーム」にある、以下のブロックを出してください。
・ダイアログ
・ゲームプレイ
上記ブロックを、以下のように入れて下さい。
テキストの部分を付け加えます。テキストには、「スコア:〇(スコア)」というふうにしたいので、文字を操作するためのブロックを使います。
高度なブロックを押して、カテゴリ「文字列」を出してください。
「文字列をつなげる」ブロックを使います。
「スコア:」という文字と、実際のスコアのデータを使います。スコアのデータはカテゴリ「情報」の以下のブロックで取り出せます。
上記ブロックを、以下のように入れて下さい。
プログラム確認
「▶」を押して、動きを確認してください。以下が確認できればOKです。
- ゲーム終了後、画面下にフレームが現れて、「スコア:〇(スコア)」と表示される
これでゲーム完成です。おめでとうございます。
すべてのプログラム(完成コード)
リミックスのポイント
りんごのスピードを変える
以下の数字を変えると、りんごのスピードを速くできます。
りんごの範囲を変える
以下のように数字を変えると、りんごが出てくる範囲を狭くできます。
カウントダウンの時間を変える
以下のように数字を変えると、カウントダウンの時間が短くなります。
まとめ
初級の第2回「キャッチゲーム」を紹介しました。ずっと繰り返す処理やスプライトどうしが重なったときの処理など、新しいことが学べました。
次回もお楽しみに♪