ときどき登録されない敵弾幕

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
chunzu

ときどき登録されない敵弾幕

#1

投稿記事 by chunzu » 13年前

どうしても詰まってしまったのでちょっとお世話になりたいと思います。

現在、疑似3D弾幕STGを作っております。
あくまで疑似なので弾幕にZ座標とそれに対する拡大縮小を行っているだけですが。

で、本題ですがそれをテストプレイすると自分が何もしなければ、敵はちゃんと予定どうりの動きをしてくれるのですが、
いざ応戦しようと自分が弾を発射していると。敵が突然効果音だけを残し、後の弾を発射してくれなくなる時があります。
たぶん配列に変な値でも入っているんだろうな(そこが原因か分かりませんが)、と思いつつも自分ではどこがいけないかが
分かりませんでした。
自分の弾の発射数が多いほどこの症状が起きやすっくなっているようです。

どこがいけないか見当もつかないためこちらのアドレスにプロジェクトごと用意しました。
DLされた方は絶対に二次配布なされないようにお願いします。
http://island.geocities.jp/nznz3102/StD.lzh
操作方法を入れ忘れたのでここで
Z          武器変更
マウス左クリック 対応した武器の弾幕発射

プログラムはこのサイトの龍神録の館を参考に作られております。
かなり自分で改造を加えていますが…

お答えお待ちしております。よろしくお願いします。

アバター
ゆーずぃ
記事: 62
登録日時: 13年前
住所: 埼玉県

Re: ときどき登録されない敵弾幕

#2

投稿記事 by ゆーずぃ » 13年前

もうちょっとソースにコメントが欲しいかも・・

>敵が突然効果音だけを残し、後の弾を発射してくれなくなる時があります。
は、再現がなかなか難しくよくわからんです。確かにたまになります。
それとは別ですけど、たまにボスが生き残っているのに弾を発射しなくなる現象は、(仕様なのかは分からないですけど。)
boss.numが13なのにshot.flagが14しか立っていないのが原因かも。
仕様だったら申し訳ない。

chunezu

Re: ときどき登録されない敵弾幕

#3

投稿記事 by chunezu » 13年前

ゆーずぃさん、お返事有難う御座います。

ボスの弾幕についても仕様ではなく、途中で途切れることに悩まされていました。
よろしければ、詳しく教えてもらえないでしょうか?

kimuchi

Re: ときどき登録されない敵弾幕

#4

投稿記事 by kimuchi » 13年前

コードをざっと見たのと自分の経験なのですが、
BulletMaxの定義値が小さすぎるため、
shot_search()関数ではじかれているのではないでしょうか?
見当違いでしたらすみません。

kimuchi

Re: ときどき登録されない敵弾幕

#5

投稿記事 by kimuchi » 13年前

本当に見当違いでした。
何のバグかすら良く分かっていなかったようです・・・
ボスがなぜか飛び去ってしまう現象ですよね。

横スレの上、誤解を招く発言、大変失礼いたしましたorz

アバター
Cir
記事: 32
登録日時: 13年前
住所: 近畿地方

Re: ときどき登録されない敵弾幕

#6

投稿記事 by Cir » 13年前

原因はまだ分かりませんが、DxLib_End関数が呼ばれていません。
これはマズイと思いますよ。

chunezu

Re: ときどき登録されない敵弾幕

#7

投稿記事 by chunezu » 13年前

ご指摘有難う御座います。

ビルドしては右上の☓でプログラムを終了させることを繰り返していたので気にも留めていませんでした。
ゲームの基本的な流れが出来てなくては話になりませんね…

アバター
kimuchi
記事: 163
登録日時: 13年前
住所: 東京

Re: ときどき登録されない敵弾幕

#8

投稿記事 by kimuchi » 13年前

以前とんでもない勘違いをした者です。
リベンジということで再来しました。

コード:

	if(boss.flag==0){
		for(int i=0 ; i<EnemyMax ; i++ ){
			if(enemy[i].boss==1){
				boss.flag=1;
				boss.num=i;
			}
		}
	}
	if(enemy[boss.num].flag==0)	boss.flag=0;
この部分でボス登録なされているようなんですが、
一度ゲームオーバーになったあとにenemy構造体が初期化されていないのか
デバッグでenemy.bossが1となるenemyが2匹いました。さらに片方はフラグが立っていなかったため、
if(enemy[boss.num].flag==0) boss.flag=0;
の部分でボスのフラグが落ちてしまっているようです。

chunezu

Re: ときどき登録されない敵弾幕

#9

投稿記事 by chunezu » 13年前

kimuchiさんお返事ありがとうございます。

これはまた改めて質問しようかなぁ、と思っていた内容なのですごく助かります。
とりあえずGfirst();の中にenemy.bossのみをすべて初期化する処理を入らたらとりあえず直りました。
たぶんもっといい方法があると思うので今はそれで代用しています。

閉鎖

“C言語何でも質問掲示板” へ戻る