投稿

12月, 2025の投稿を表示しています

プログラミング日誌6~ステージ2~

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

プログラミング日誌5~壁突破~

イメージ
 お疲れ様です 久しぶりの投稿ですが進捗はあります まずは前回の課題であった、壁をすり抜けてしまう点これは先生の協力もあり解決することができました。 原因は使っているマップチップの大きさとプログラムで指定している一マスの大きさが位置していないことでした。そのあたり全て確認したはずなのですが… 次にそれを突破できたのはいいものの、今度はモンスターへの当たり判定がない状態でした。 問題点は2つありました。 1つ目はAIを使ったことによる文を全体で見たときの互換性がなくなっていたことです。 当たり判定に関したプログラムとしてattackcheckとhitcheckというコードを使っています。名前の通り攻撃判定と当り判定を認識するコードなのですが、以前のブログでもお伝えした通り、どうにも進まなくなりAIが作ったコードをここに使用しました。 二つの判定コードを単体で見たとき、特に何もないのですがこれを他のコードと組み込むと互換性がなくなり判定が効かなくなるということでした。 AIの難しさを実感しましたね... 問題点2はここにありました。上記は修正済みなのですが、以前までif文の主人公とガーゴイルの場所が逆になっており、ガーゴイルが攻撃した時に~という条件になっていたのです。 こんな単純なミスに気付かなかったなんて これらを解決した結果モンスターを倒すことができ、また壁にめり込むこともなくなりました。 今回の報告はこれで以上です! 次回は他のステージを一気に紹介するとともに、以前研究ノートで作ったプログラムに飛べるようにします。 それではまた