ミニダンジョンを作ろう 2

 

前回の ミニダンジョンを作ろう のつづきです。

私はプログラミングに興味がある人に「ゲームプログラミング」を課題にした学習を勧めています。
理由はゲームを作るという課題がとても優れているからです。
良い点として
・1本の完結したプログラムを課題にできる
・アレンジ(カスタマイズ)し易い
などがあります。

タイトルから始まってゲームプレイ、そしてゲームオーバーまでを作ることで完結します。 リトライ機能を入れるなら全体の設計を理解して作る必要もあります。
また、小さいアレンジから大幅な改造までやり放題です。
キャラの色を変えるだけでも、アイテムや敵を増やすなども学習になります。
自分で何か新しいゲームを作ってみようかな、と考える機会も増えると思います。

 

コインを表示しよう

タイルマップの絵をスプライトに差し替える方法を説明します。
基本的にはタイルマップの絵をそのまま使ってもいいと思います。
ただ、絵をアニメーションさせたい、絵に合った当たり判定をしたい、などの時はスプライトへの差し替えは必要になります。

前回のプレイヤーの初期配置の絵を消した方法を使って、タイルマップの絵からスプライトへの差し替えをやってみましょう。
今回は、赤い玉をコインのスプライトに変えます。

下図のようにループをコピーしてください。
そして絵を赤い玉に変更します。

赤玉の数のループを作る

 

ループの中に空のタイルと差し替える処理が入っているので、
実行すると赤い玉が消えます。

と赤い玉が消える

 

もう簡単ですね。
コインのスプライトを追加してください。

コインのスプライトを追加する

 

変数名を coin に変えましょう。
「別に変えなくても動くじゃん」
と思っていると将来はダメプログラマーになります。気を付けましょう。

変数名をcoinに変更する

 

タイプも変更します。
タイプ変更のメニューを開いて 新しいkindを追加する をクリックします。

新しいkindを追加する

 

coin という新しいタイプを作ります。

タイプcoinを作成する

 

変数名を coin 、タイプを coin に変更しました。
ちなみに、タイプ coin は当たり判定のとき使います。

変数名とタイプをcoinにする

 

コインの絵を赤い玉のあった場所に配置する必要があります。
シーン から mySpriteをタイルマップ列0行0の上に配置 を持ってきます。

mySpriteをタイルマップ列0行0の上に配置を使う

 

coin の上に配置にします。

coinを値の上に配置にする

 

実行してコインが表示されることを確認します。

実行してコインの表示を確認する

 

コインの当たり判定を入れよう

プレイヤーがコインをゲットできるようにします。

スプライト から当たり判定を持ってきます。
otherSprite を coin タイプに変更します。

スプライトの当たり判定を用意する

 

ゲットしたコインを消す処理を作ります。
スプライト から destroy を持ってきます。
削除対象を otherSprite にしてスプレーの演出も入れましょう。
情報 から スコアを 1 変える も追加します。

ゲットしたコインを消す

 

テストしましょう。
コインをゲットしてスコアが入ることを確認します。

コインがゲットできることを確認する

 

ちょっとさびしいのでコインが上に移動する演出を入れます。
スプライト から mySpriteのXを0にする を持ってきます。

mySpriteのXを0にするを使う

 

otherSpritevy(速度 y)-50 にします。

コインのvyを-50にする

これでゲットしたコインは消えるまで上に移動するようになりました。
実行して確認しましょう。

 

マップを切り替えよう

複数のマップを使うということは、当然、マップを切り替えることになります。
論理 にある条件判断を使っても切り替えはできますが、配列を使ってやってみたいと思います。
配列とは複数の入れ物をまとめて管理できるようなものです。
今回はマップを入れて切り替えに使いますが、様々な用途に利用できます。

配列高度なブロック の中にあります。
配列 を開いて下図のブロックを持ってきます。

配列を使う

 

切り替えはマップの処理をする前に変更したいので下図の所に入れます。

マップ処理の前に配列を入れる

 

ここで処理の順番を変えたいと思います。
カメラでスプライトmySpriteを追う はマップ内容に関係なくいつでも実行するものなので、マップ切り替えの前に持ってきます。

一度、カメラでスプライトmySpriteを追う 以下の処理を 最初だけ から外します。

抜け道とスプライト配置

 

カメラでスプライトmySpriteを追う だけ残し、あとは元に戻します。

追いかけカメラ以外を戻す

 

カメラでスプライトmySpriteを追う を配列変更の前に入れます。

追いかけカメラを戻す

 

タイルマップのデータを配列の 0 番目の中に入れます。
配列は 0 からカウントします。注意しましょう。

タイルマップのデータを配列に入れる

 

2つ目のマップを作成しよう

2つ目のマップを作成します。
シーン から tilemap を持ってきます。

tilemapを使う

注意:
2つ目も1つ目のようにコピーすればいいと思っているとハマります。
tilemap の入れ物はコピーされません。

 

tilemap を配列の 1 番目(右側)に入れます。
入れた tilemap をクリックしてエディタを開きます。

tilemapを配列1番目に入れる

 

マップサイズを横 1012 に変更します。

マップサイズを10x12にする

 

下図を参考に壁を描きましょう。

壁を描く

 

絵を Dungeon に切り替えて3つの絵を追加します。
これらは「プレイヤーの初期位置」「壁を消すスイッチ」「脱出の階段」になります。

3つの絵を追加する

 

絵を Miscellaneous に切り替えて岩を追加します。
この岩をスイッチで消すことになります。

岩を描く

 

壁と岩に当たり判定を入れます。

壁と岩に当たり判定を入れる

これで2つ目のマップは完成です。

 

配列の名前を作ろう

変数名を「配列」という名前のままではよくありません。
メニューを出して 変数を作成する をクリックします。

変数を作成する

 

変数名 map を作ります。

変数名mapを作る

 

続きます。

 

MakeCode Arcade

  1. MakeCodeはいかが
  2. りんご狩りゲーム
  3. りんご狩りゲーム(完)
  4. ピザを避けてゲーム
  5. ピザを避けて 2
  6. ピザを避けて(完)
  7. アカウント登録
  8. ケーキ早食いゲーム
  9. ケーキ早食い 2
  10. ケーキ早食い(完)
  11. 危険ドライブ
  12. 危険ドライブ 2
  13. 危険ドライブ(完)
  14. 15秒シューティング
  15. 15秒Shooting 2
  16. 15秒Shooting(完)
  17. ブロック崩し
  18. ブロック崩し 2
  19. ブロック崩し(完)
  20. ヘビキングを撃て
  21. ヘビキング(完)
  22. ちょびっと迷路
  23. ちょびっと迷路 2
  24. ちょびっと迷路(完)
  25. でんでんジャンプ
  26. でんでんJump 2
  27. でんでんJump(完)
  28. ミニダンジョン
  29. ミニダンジョン 2
  30. ミニダンジョン 3
  31. ミニダンジョン 4
  32. ミニダンジョン(完)