ページ 11

【STG】敵機消滅時に敵弾が同時消滅してしまう不具合について

Posted: 2010年9月27日(月) 21:35
by cosin
ただいま「龍神録プログラミングの館」を参考に、初めてのプログラミング勉強として横スクロールシューティングをC/C++とDXライブラリ、開発環境はVisualStudio2008を用いて製作しております。ただいま製作しているプロジェクトに取り掛かり半月ほど経ちまして、自機/自機弾・敵機/敵弾の描画と自機弾/敵機の当たり判定まで差し掛かりました。

しかし、ここで不具合を見つけたのですが、その不具合が『敵機が画面外に出るか、もしくは撃破されると、その敵機が画面上で撃っていた敵弾まで一緒に消えてしまう』というものです。

龍神録を参考としたため、ソースコードのほとんどの基本構造は龍神録と同様のものになっており、異なる点は関数名と座標指定程度のもので、さほど大きな違いはありません。

最初は描画フラグ管理に間違いがあると思い見直したのですが、特に思い当たる箇所を見つけることが出来ず、同様に演算子や変数の確認も行いましたが、上手く解決することが出来ませんでした。

この問題で5日ほど悩みながら何度も見直しを行いましたが、原因箇所がどうやら自分一人では気づくことの出来ないところにあるようです。そこで皆様にお願いがあるのですが、もしよろしければお力添えをお願いできないでしょうか。

ソースコードは龍神録と同様の構造をとっており、一口にソースコードを記述することが難しいため、大変恐縮ですがアップローダーに上げたファイルとさせて頂きました。

※ソースコードファイルURL:
http://www1.axfc.net/uploader/Ne/so/91717.zip&key=cosin

大変お手数をお掛けしますが、何か気になる点やアドバイスなど頂けると大変嬉しいです。よろしくお願いいたします。 画像

Re:【STG】敵機消滅時に敵弾が同時消滅してしまう不具合について

Posted: 2010年9月27日(月) 22:19
by fatens
敵機が消滅したとき、out.cppの172行目でeneshot.flag=2としていますが、
敵弾の描画条件がgraph.cppの39行目ではeneshot.flag==1になっています。
そのため、『敵機が画面外に出るか、もしくは撃破されると、その敵機が画面上で撃っていた敵弾まで一緒に消えてしまう』
という状態になっているのだと思います。

描画の条件をeneshot.flag>0に変更すると、正しく描画されているように見受けられます。

Re:【STG】敵機消滅時に敵弾が同時消滅してしまう不具合について

Posted: 2010年9月27日(月) 22:43
by cosin
ありがとうございます、ご指摘通りの箇所を確認修正し、無事に解決いたしました!
これほど早く、正確なご指摘を頂けて大変嬉しいです。

敵弾処理の関数に気を取られ、描画関数内の条件文のミスを見逃しておりました。

得手となるには原因を突き止める能力も必須ですね。
初心者と言えど、自分のソースコードの管理ぐらいは出来るようにならなければ。日々精進いたします。

お手数をお掛けいたしました。本当にありがとうございました。