投稿

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

プログラミング日誌7~マップ3への苦労~

イメージ
 もう今年が終わりますね ということで早速本題です マップ3(ステージ2)には悪魔が3体出てきます 真ん中のやつが体力多めです 悪魔を倒すとマップの描画が変わり、マップ4への扉が開きます ただ、悪魔を倒すだけで開くわけではないのでそこは頑張ってやってみてください 前回ゴーレムにフラグを付けましたが、そちらをまた悪魔にも使っています ここまでがざっとマップ3の説明です 苦労した点はまず下のエラーした時の画像を見てください と言いたいところだったのですがしっかり保存されておらず、載せることができませんでした… どんなエラーかというとまず悪魔がすべてのステージに出現し、マップ3の壁がすべてのステージに重なって描画されるという何ともカオスなエラーです ステージとモンスターそして主人公の描写は各ステージごとに行われています fieldpaintと名付けたプログラムなのですがここでは if(stage == 0){  背景(床) モンスター描画  主人公描画 背景()壁                      } こんな感じで構成されています これが else if(stage == 2){     背景床  主人公 } 悪魔描画  背景壁 このように }の外に打ち込まれていました そりゃエラーもでますね そして現在マップ3の扉を開ける、つまり今の何もない状態の壁から扉を出現させるわけですがこれはモンスターが倒されたら扉がある状態の画像に切り替えるというプログラムを組もうとしています ここですっごい量のエラーが出てしまい、停滞中ということです 次までに 1エラーを解消しマップ4へとつなげる 2たどり着いた先でコメント欄的なのが表示され会話シーンへと突入する 3マップ4から以前研究ノートで作ったマップへとつなげる ここまでいきたいです それではよいお年をお迎えください

プログラミング日誌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=ガーゴイルとなっていたため、ゴーレムの画像...

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

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