前回の ミニダンジョンを作ろう 4 のつづきです。
今回でミニダンジョン講座は終わりです。
5ページも使って説明しましたが、まだまだ話したいことは沢山あります。
でも、どうやって実現していくのかを自分で考えるのもプログラミングの楽しさでもあると思います。
色々な工夫で面白いダンジョンを作ってください。
残ったスプライトを消そう
ここで1つバグを潰します。(不具合を修正します)
1面目のコインをできるだけ残して2面目に行ってみてください。
下図のように残ったコインが表示されます。

これはマップを切り替えたとき、タイルマップの描き替えはしたけど、表示していたスプライトは放置していたために発生したバグです。
スプライト から destroy all sprite of kind player を持ってきます。
これは指定したスプライトをすべて削除する命令です。

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

1面目で残したコインが2面目で消えているかテストしましょう。
4つ目のマップを作ろう
4つ目のマップを作ります。
ここでは敵を配置して動かしてみたいと思います。
4つ目の枠を作り(+記号をクリック)、タイルマップ編集エディタを開きます。
この手順が分からないときは3つ目のマップを作ろうを参照しましょう。

マップサイズを横 10 縦 16 に変更します。

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

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

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

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

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

変数名は snake にします。

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

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

敵を動かそう
ヘビを左右に動かしたいと思います。
ヘビ配置のループの中に snake の速度を vx 50 vy 50 にする さらに
set snake bounce on wall オン を追加します。
これでヘビは壁で跳ね返ります。

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

敵との当たり判定を入れよう
敵との当たり判定を入れます。
これはコインの当たり判定をコピーすると簡単に作れます。
当たり判定の対象を Enemy に変更します。
vy 速度変更とスコア処理はいらないので削除します。

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

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

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

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

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

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

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

完成
完成しました。
というよりタイルマップを使うとき知っていると便利そうなことを説明しました。
マップのセットの処理で気を付けたいのは、マップ情報以外のことに依存しない作りにすることです。
そうすることでプログラムの作りを気にせずマップの追加ができます。
残念ながら今回これができていない所があります。
変数 map_no が 2 のときコインをランダムに表示する処理のことです。
ある特定のキャラ(タイル)を配置してある場合、コインをランダムに表示するようにすれば良かったのです。
復習にもなるので自分でこの改造をしてみてください。
最後にすべてのコードを貼っておきます。



