追加マップvol.3-2
お久しぶりです、東京経済大学のおみぬーです。
前回のブログでは、モンスターの動き方を決定するコードを紹介しました。
今回は改造後のコードを紹介します。
モンスターの動きを変化させるために変更した箇所は、moveメソッドです。
this.move = function () {
this.movecounter();
if (this.movecnt > 0) {
return;
}
if (this.dx == 0 && this.dy == 0) {
this.dx = 1;
this.dy = 0;
}
while (map[this.py + this.dy][this.px + this.dx] != 9) {
switch (Math.floor(Math.random() *4)) {
case 0: this.dx = -1; this.dy = 0; this.dir = -1; break;
case 1: this.dx = 0; this.dy = -1; this.dir = -2; break;
case 2: this.dx = 1; this.dy = 0; this.dir = 1; break;
case 3: this.dx = 0; this.dy = 1; this.dir = 2; break;
}
}
}
一つ目のif文では、モンスターがマスを移動中moveメソッドから抜け出すようにしています。
二つ目のif文では、モンスターの初期移動方向を指定しています。今回の場合は右方向に進むように指定しています。
そしてその後のwhike文では、初期移動方向以外でのモンスターの移動方向を決定しています。
モンスターの移動先が通路でない場合、switch文で0、1、2、3のいずれかの値をランダムに決定し、0の場合は左、1の場合は上、2の場合は右、3の場合は下方向へ移動します。
このswith文は通路を移動している場合には実行されません。そうすることで、壁に当たるまで移動方向を変えない、つまり直線移動するようになっています。
今回はモンスターの動きを変化させるために使用したコードの紹介でした。
次回は追加マップの紹介を予定しています。
今回はここまでです。
参考文献
田中賢一郎『ゲームで学ぶJavaScript 入門』インプレス,2015年
田中賢一郎『ゲームで作りながら楽しく学べる HTML5+CSS+JavaScript』インプレス,2017年
田中賢一郎『ゲームで学ぶJavaScript 入門 増補改訂版~ブラウザゲームづくりでHTML&CSSも身につく!』インプレス,2022年
コメント
コメントを投稿