プログラミング日誌6~ステージ2~
早速本題から入ります
ようやく2個目のマップが完成?しました
なぜ「?」なのかも含め説明していきますまずプログラムとしてはマップ0でガーゴイルを追加したのと同じようにゴーレム1とゴーレム2を追加しました
と言いたいところなのですが、マップを見ていただけるとわかるようにここには出口がありません
ここではゴーレム二体に生死それぞれに判定を付けており、ゴーレムが倒されると判定がfalseになりどこかの壁が通れるようになります
function monster(px, py, life, imgid) {
this.px = px;
this.py = py;
this.dx = 0;
this.dy = 0;
this.dir = 2;
this.life = life;
this.dead = false;
this.movecnt = 0;
this.imgid = imgid; //ここが大事、ここでimgを呼ぶ
こんな感じですね
モンスター全てに倒されたらfalseになるというプログラムが付与されたので今後出てくるモンスターにも使うことができます
そして、大きな変更点が画像にあるようにimgidというコードで画像をそのままよびだせるようにしました
なぜかというと今までの状態だとimg=ガーゴイルとなっていたため、ゴーレムの画像を呼び出せずにエラーが起きてしまいます
これで違うモンスターをステージごとに呼べるようになりました
さらに追加点としてステージ移動できるようにしました
function changeStage(nextStage, startX, startY) {
stage = nextStage;
// 主人公の位置リセット
syujinnkou.px = startX;
syujinnkou.py = startY;
syujinnkou.dx = 0;
syujinnkou.dy = 0;
syujinnkou.movecnt = 0;
// 向きリセット
syujinnkou.dir = 2;
//追加
syujinnkou.ax = syujinnkou.px;
syujinnkou.ay = syujinnkou.py + 1;
}
if (
stage === 0 &&
syujinnkou.px === 24 &&
syujinnkou.py === 16
){
changeStage(1, 1, 16); //0から1一回目のステ移動
}
if (
stage === 0 &&
syujinnkou.px === 24 &&
syujinnkou.py === 17
){
changeStage(1, 1, 17); //上記
}
changestageという機能を追加しました
ここには主人公が指定したステージのX座標とY座標に入るとchangestageが動き、指定のステージと座標に移動できます
(ステージの数字、X座標、Y座標)こんな感じです
2個目のステージに入ったとたんに槍が出なくなるという現象が起きました
原因は gc.drawImage(document.getElementById("syujinnkou"), ...)
これです
ステージ0ではpaintから主人公を描画していたのですが、ステージ1・2・3は直接画像を呼び出してました
主人公の向き矢印や攻撃エフェクト、ここだと槍の画像はすべてpaintに集約されています
今後注意していきたいですね
ざっと追加した機能はこのあたりです
そしてなぜ?なのかというと、
ゴーレムを倒すと壁を通れるようになると書きましたが、その通れる壁がそのまま変わらないままなのです
しかし!どこを通れるのか探すというのもめんどくさいですが、一興だとも思うのです
探してもらうためにも探すという行為に誘導するための何かが必要なのですがまだその点に至っておりません…
とりあえず全ステージを完成させるのが先なのであとで何とかしようと思います
今回はここまで
ではまた
コメント
コメントを投稿