4つ目のマップと新しいギミックの追加

 新しいマップは画像のようになっていて、岩に囲われている敵キャラクターを倒すためにギミックを突破する必要があります。

よく画面を見てみると、周りの岩と少し違う岩があると思います。その部分の岩だけ攻撃すると倒すことができて、敵キャラクターにたどり着くまでの道が開けるようになっています。

当初は攻撃をすると破壊することができるオブジェクトとして、この岩を実装したかったのですが、プログラムとしては敵キャラクターとほぼ同じ物で動作しているので、敵キャラクターであるおばけが岩に擬態しているという形になりました。

なぜその形で進めることにしたのかですが、一番の理由として作業量の多さです。今回の作業量としては下記に詳しく書きますが、敵キャラクターを2体さらに追加して計4体にするだけで済みましたが、「破壊することができる岩」を追加しようとすると、攻撃判定やライフの設定など作業量が2倍以上に増えそうだと思ったので、今回は「岩に擬態した敵キャラクター」という形に変更しました。

作業量が2倍になると発生したバグの対処やミスのチェックにも時間がさらにかかるので、作業量を減らすように効率の良く無駄のないプログラムを書くことが本当に大事だと実感しました。

以下に今回の追加した部分などの詳細を書いていきます。

今までは、敵キャラクターの移動に関する部分はrandomwalkmonster関数とjumpmonster関数で管理していましたが、今回位置を動かないためのstillmonster関数を追加しました。

function stillmonster() {
            this.move = function () {
               if (this.movecounter) this.movecounter();
                 this.dx = 0;
                 this.dy = 0;
            }
        }

他の部分は敵キャラクターを増やすだけの簡単な作業のはずでしたが、1時間くらいなぜかうまく動作しなくて、デベロッパーツールを利用しても分からなくて、最終手段でChatGPTにプログラムを張り付けて聞いてみたら、prototypeの部分でスペルミスをしていて、protorypeに打ち間違いでなっていることが原因だと分かりました。

一文字だけの打ち間違いで正常に動作しないのは恐ろしいと度々思います。まだまだプログラミング初心者だなと実感しました。

参考文献

今回使用させていただいた素材は、「ぴぽや倉庫」と「ドット絵世界」さんのものです。

https://pipoya.net/sozai/

https://yms.main.jp/dotartworld/index.html