追加マップvol.2

東京経済大学のおみぬーです。
前回に引き続き追加マップの紹介になります。今回はvol.2です。
前回のブログでは、モンスターの動きを変えるつもりでしたが、先にモンスターの追加をすることに決めました。

以下が今回作成したマップ画像です。


今回のマップでは前回のマップからモンスターが1体増え、2体になりました。
マップのクリア条件は変わらず、モンスターのライフを0にすれば良いです。この際2体ともライフを0にしなくてはなりません。

マップのコードは以下になります。

var map = [
[8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8],
[8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8],
[8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8],
[8, 8, 9, 8, 8, 8, 8, 8, 8, 9, 9, 8, 8, 8, 8, 8, 8, 9, 8, 8],
[8, 8, 9, 9, 9, 9, 9, 9, 8, 9, 9, 8, 9, 9, 9, 9, 9, 9, 8, 8],
[8, 8, 9, 8, 8, 8, 8, 9, 8, 9, 9, 8, 9, 8, 8, 8, 8, 9, 8, 8],
[8, 8, 9, 9, 9, 9, 8, 9, 8, 9, 9, 8, 9, 8, 9, 9, 9, 9, 8, 8],
[8, 8, 9, 8, 8, 9, 8, 9, 8, 9, 9, 8, 9, 8, 9, 8, 8, 9, 8, 8],
[8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8],
[8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8],
[8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8],
];

前回同様、8が壁、9が通路、7はクリア前は壁、クリア後に隠し通路が出るように定義しています。

前回のマップクリア後、今回のマップに移動します。以下がコードです。

if (jelly.life == 0 && map[slime.py-1][slime.px] == 7 && slime.dir == -2) {
location.href = "hitcheck8ex-3.html";
}

上記コードは前回のHTMLファイルから今回のHTMLファイルに移動するためのコードになります。

モンスター2体の初期位置とライフを定義するコードは、以下になります。

jelly1 = new monster(8, 2, 3, "imgJelly");
jelly2 = new monster(11, 2, 3, "imgJelly");

その後、tick関数内でモンスターのライフが0になった際に画面から消すように定義しています。以下がコードです。

if (jelly1.life != 0) {jelly1.move();}
else {jelly1.px = 21;}
if (jelly2.life != 0) {jelly2.move();}
else {jelly2.px = 21;}

モンスター2体のライフを0にすると7の隠し通路が出現し、location.hrefで次のHTMLファイルを読み込みます。以下がコードです。

if (jelly1.life == 0 && jelly2.life == 0 && map[slime.py-1][slime.px] == 7 && slime.dir == -2) {
location.href = "hitcheck8ex.html";
}

現状次のHTMLファイルを作成していないため、初期マップのHTMLファイルに移動するように定義しています。

モンスターの当たり判定を定義するコードは以下になります。

damagecheck(slime ,jelly1);damagecheck(slime ,jelly2);
if (slime.attack == true) {attackcheck(slime, jelly1);attackcheck(slime, jelly2);}

以下のコードで、モンスターと主人公を描画しています。

if (jelly1.life != 0) {jelly1.paint();}
if (jelly2.life != 0) {jelly2.paint();}
if (slime.life != 0) {slime.paint();}
}

モンスター、主人公それぞれがライフ0でない時に描画するように定義しています。

次回はモンスターの動きに変化を加えていこうと思います。
今回はここまでです。

参考文献
田中賢一郎『ゲームで学ぶJavaScript 入門』インプレス,2015年
田中賢一郎『ゲームで作りながら楽しく学べる HTML5+CSS+JavaScript』インプレス,2017年
田中賢一郎『ゲームで学ぶJavaScript 入門 増補改訂版~ブラウザゲームづくりでHTML&CSSも身につく!』インプレス,2022年

コメント

このブログの人気の投稿

追加マップvol.3-1

卒業研究ブログ開始