ミニダンジョンを作ろう(完)

 

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

今回でミニダンジョン講座は終わりです。
5ページも使って説明しましたが、まだまだ話したいことは沢山あります。
でも、どうやって実現していくのかを自分で考えるのもプログラミングの楽しさでもあると思います。
色々な工夫で面白いダンジョンを作ってください。

 

残ったスプライトを消そう

ここで1つバグを潰します。(不具合を修正します)

1面目のコインをできるだけ残して2面目に行ってみてください。
下図のように残ったコインが表示されます。

残ったコインが次の面で表示されるバグ

 

これはマップを切り替えたとき、タイルマップの描き替えはしたけど、表示していたスプライトは放置していたために発生したバグです。

スプライト から destroy all sprite of kind player を持ってきます。
これは指定したスプライトをすべて削除する命令です。

destroy all sprite of kind playerを使う

 

関数 マップのセット の中に入れて、スプライトを coin に変更します。

マップのセットの初めにcoinを消す

 

1面目で残したコインが2面目で消えているかテストしましょう。

 

4つ目のマップを作ろう

4つ目のマップを作ります。
ここでは敵を配置して動かしてみたいと思います。

4つ目の枠を作り(記号をクリック)、タイルマップ編集エディタを開きます。
この手順が分からないときは3つ目のマップを作ろうを参照しましょう。

4つ目のタイプマップエディタを開く

 

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

マップサイズを10x16に変更

 

壁・プレイヤーの初期配置・脱出階段を描きましょう。
箱の絵も5つ配置します。これが敵の配置場所になります。

壁などの配置を描く

 

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

壁に当たり判定を入れる

 

実行してマップを確認しましょう。
マップの横幅が 10 くらいで表示画面のサイズと同じになります。
マップを作成するときはどのように表示されるかを考えながら作りましょう。

実行してマップを確認する

 

敵を配置しよう

敵を配置する仕組みは、コインを配置したものをコピーして作ります。
下図のようにコピーして組み込みましょう。

コインの配置処理をコピーする

 

まずスプライトの絵をヘビに変更します。
ヘビのための変数が必要です。変数coinをクリックしてメニューを出し 変数を作成する をクリックします。

ヘビの絵を選択し変数を作る

 

変数名は snake にします。

変数名snakeを作る

 

検索対象を に変更します。
変数名を snake 、タイプを Enemy にします。

変数名をsnakeタイプをEnemyにする

 

実行してヘビの配置を確認しましょう。

ヘビが配置されたか確認する

 

敵を動かそう

ヘビを左右に動かしたいと思います。

ヘビ配置のループの中に snake の速度を vx 50 vy 50 にする さらに
set snake bounce on wall オン を追加します。
これでヘビは壁で跳ね返ります。

左右に動かし壁で跳ね返るようにする

 

左右にのみ動くようにします。(vy は 0
vx 速度は 20 から 50 のランダムにします。

左右にのみ動くようにする

 

敵との当たり判定を入れよう

敵との当たり判定を入れます。
これはコインの当たり判定をコピーすると簡単に作れます。

当たり判定の対象を Enemy に変更します。
vy 速度変更とスコア処理はいらないので削除します。

敵との当たり判定を作る

 

ライフを -1 変える を追加します。

ライフを-1変えるを追加

 

ヘビとの当たり判定をテストしましょう。

ヘビとの当たり判定をテストする

 

1面目にも敵を配置しよう

1面目にも敵を配置してみます。
複数のマップで試してみると、敵の配置処理が正常に働いているのか分かります。

1面目のタイプマップエディタを開きます。

1面目のタイプマップエディタを開く

 

下図の場所に箱を配置します。

マップの下部に箱を配置する

 

テストしてみましょう。
問題なくヘビが表示され、左右に動きます。

敵の配置をテストする

 

テストを続けます。2面に進んでください。
おっと1面目のヘビが表示されています。
これはコインと同じバグが発生しています。

2面目に1面のヘビが表示される

 

マップのセットですべてのコインを消したように destroy all sprite of kind Enemy を追加します。
これでマップ切り替えのとき、画面上にあるすべてのEnemyを削除します。

マップのセットでEnemyの削除

 

完成

完成しました。
というよりタイルマップを使うとき知っていると便利そうなことを説明しました。

マップのセットの処理で気を付けたいのは、マップ情報以外のことに依存しない作りにすることです。 そうすることでプログラムの作りを気にせずマップの追加ができます。
残念ながら今回これができていない所があります。

変数 map_no が 2 のときコインをランダムに表示する処理のことです。
ある特定のキャラ(タイル)を配置してある場合、コインをランダムに表示するようにすれば良かったのです。
復習にもなるので自分でこの改造をしてみてください。

最後にすべてのコードを貼っておきます。

最初だけの処理 当たり判定 マップのセット処理 スイッチと脱出

 

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. ミニダンジョン(完)