Makecode Arcadeでのゲームの作り方1「ゼルダ」風ゲーム

Makecode Arcadeでのゲームの作り方を紹介します。
まずMakecode Arcadeのページを開きます。
プロジェクトを作成する
ページの上の方に「新しいプロジェクト」のボタンがあるのでそれをクリックします。クリックしたらプロジェクト名を聞かれるので、作りたいゲームの名前を入力し作成をクリックします。
プロジェクトを作成すると、Scratchのプログラミング画面が表示されます。「最初だけ」と書いてあるブロックがありますのでこれに初期設定を加えます。
「最初だけ」を設定する
このままだと背景がないので背景を追加しましょう。背景を設定するには「シーン>タイルマップを設定する」ブロックを選択して「最初だけ」ブロックに組み込みます。
「タイルマップを設定する」ブロックの(timemap)をクリックするとタイルマップのエディタが表示されるのでタイルマップを編集してみましょう。
左下の画像の中からDangeonを選択してタイルを配置します。ここではダンジョンっぽいものを作ってみました。

これだと地面と壁の区別がないので、壁タイルを壁として設定します。画面左の赤丸をつけた壁アイコンをクリックすると画面上に壁を設定できるので、壁にしたい場所に壁をおいていきましょう。
壁を置いた場所はピンク色になります。この部分にはキャラクターが移動できません。
設定が終わったら「完了」をクリックします。
スプライトを設定する
スプライトとは画面上を動き回る画像です。私は「キャラ」とか言ったりしますが。
スプライトを設定するには「スプライト>変数myspriteをスプライト□(playerタイプ)にする」を選んで「最初だけ」ブロックの「タイルマップを設定する」の後に組み込みます。
□をクリックするとスプライトのエディタが表示されるので好きなキャラを書いてください。私は楽をして画面上の「ギャラリー」から適当なのを選びました。書けたら「完了」を押します。
次にこのスプライトを十字キーで動かしたいので「コントローラー>myspriteをボタンで動かす」ブロックを選んで「変数myspriteをスプライト□(playerタイプ)にする」ブロックの後ろに組み込みます。
ゲームを動かして見る
ここまでできると一応ゲームのように操作することができます。左側のゲーム機の画面をクリックするとスイッチONになりますので自分のキャラを動かして見てください。

カーソルの上下左右でキャラが動くと思います。でも画面の外に消えていきますよね。キャラの動きに合わせて画面を動かすには「シーン>カメラでmyspriteを追う」ブロックを「myspriteをボタンで動かす」ブロックの後ろに追加します。
ここまででプログラミングしたブロックは次のようになっていると思います。

敵キャラを作る
ゲームには敵が必要です。次は敵キャラを作ります。
敵キャラを作るには「スプライト>変数mySprite2をスプライト(playerタイプ)にする」ブロックを選んで「カメラでスプライト(mysprite)を追う」ブロックの後ろに追加します。追加したブロックの(playerタイプ)をプルダウンして(Enemyタイプ)に変えます。
デフォルトだと敵キャラもマイキャラと同じ場所に配置されるので敵キャラだけ別の場所に配置されるように「スプライト>myspriteの位置をx0y0にする」ブロックを「変数mySprite2をスプライト(playerタイプ)にする」ブロックの後ろに追加して敵キャラを別の場所に移動します。
敵キャラを移動するのでmyspriteをmysprite2に変更してx200y200くらいに変更します。
このままだと動かないので「スプライト>sprite2の速度をVX50 VY50にする」ブロックを追加します。更にその後に「set mysprite2 bounce on wall オン」ブロックを追加すると敵キャラが壁で跳ね返ります。
これで「最初だけ」ブロックの中身は全部です。
衝突判定をする
ここまでの状態でゲームを実行しても敵キャラをマイキャラがすり抜けてしまいます。なので、敵キャラにぶつかったときにゲームオーバーにする衝突判定を追加します。
「スプライト>sprite(playerタイプ)がother sprite(enemyタイプ)と重なったとき」ブロックを追加します。このブロックは「最初だけ」ブロックの外に設置します。
このブロックの中に「ゲーム>ゲームを終了する 負け」ブロックを追加します。
これでマイキャラと敵キャラが接触するとゲームオーバーになります。
ここまでのプログラムは下のようなブロックになります。

この他に
ここまでやれば普通にゲームとして動作します。でもこのゲームには勝ちのゲーム終了がありません。例えば宝物などのスプライトを配置して、宝物と接触すると勝ちとしても良いでしょう。
このゲームは下のリンクからプレーできます。ブロックの配置も見られるので参考にしてください。
他にもゲームを作リますので、またブログで記事にします。