レーザーの画像が残る

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

レーザーの画像が残る

#1

投稿記事 by すずめ » 16年前

こんにちは、いつもお世話になっています。
龍神録プログラミングの館の35章以降なんですが、
bossの弾幕でレーザーが発射されている時のことです。
レーザーが発射された状態でbossのhp(体力)がゼロになるとき、
つまり画面上のメーターがゼロになる時、次の弾幕に
移ってもレーザーの画像が残ったままになります。

レーザーを売っていない状態で次の弾幕に移るときは
大丈夫です。

まだ初心者なものですから、この章あたりまでくると
何度読み直しても分かりません。

ためしに、lazer[0].cntを表示したところ、
lazerは320カウントで繰り返しています。
lazerが発射されていない時にメーターがゼロになると
カウントは320で止まったままで次の弾幕に移ります。
lazerが発射された状態でメーターがゼロになると
カウントはカウントしつづけ、lazerの画像が残ったまま
次の弾幕に移ります。

lazer.cnt++;が記述されているところも見つけられませんでした。

アドバイスをお願いします。

yu

Re:レーザーの画像が残る

#2

投稿記事 by yu » 16年前

レーザーが初期化されていないのではないでしょうか?

memset(lazer,0,sizeof(lazer_t)*LAZER_MAX);

を適当な場所に書いてやるといいと思います

#追記
#35章だとboss_shot.cpp内の167行当たりに挿入してやればよいと思います。


後、レーザーをカウントしている場所は
shot.cpp 内の lazer_calc() の中 です

すずめ

Re:レーザーの画像が残る

#3

投稿記事 by すずめ » 16年前

返信ありがとうございます。

何箇所か入れてみたんですが、だめでした。

//ボスの弾幕メイン
void boss_shot_main(){
	if(stage_count==boss.appear_count[0] && boss.flag==0){//開始時間なら
		enter_boss(0);//開始
		//反魂蝶のBGMを流す場合はload.cppを変更後、ここの注釈を外してください。
//		PlaySoundMem(sound_se[99],DX_PLAYTYPE_BACK);
	}
	if(boss.flag==0)//ボスが登録されて無ければ戻る
		return;
	calc_boss();
	if(boss.phy.flag==1)//物理演算移動オンなら
		calc_phy();//物理計算を

	if(boss.state==2 && (boss.hp<=0 || boss.endtime<=0)){//弾幕中で体力が無くなったら
        se_flag[1]=1;//敵のピチュリ音
		se_flag[11]=1;
		// ここに入れてもだめでした。
		enter_boss(1);//次の弾幕を登録
		// ここに入れてもだめでした。
	}
	if(boss.state==1){//弾幕間の待機時間

		waitandenter();
		// ここに入れてもだめでした
	}
	if(boss.state==2){//弾幕中なら
		boss_shot_bullet[boss.knd]();//弾幕関数へ
		boss_shot_calc();//弾幕計算
	}
	boss.cnt++;
}
入れた場所が悪かったのかもしれません。
なお、35章のサンプルをそっくりそのまま使用したので
memset(lazer,0,sizeof(lazer_t)*LAZER_MAX);は
ini.cppのini()に記述されています。
ここの製作者には大変お世話になっているので失礼なんですが、
バグということはないんでしょうか。
この章を勉強されたほかの人には、この症状が
でないんでしょうか。

lazer.cnt++は、boss_shot.cppとboss_shotH.cppばかり
探していたのできずきませんでした。
ありがとうございました。

pooka

Re:レーザーの画像が残る

#4

投稿記事 by pooka » 16年前

ttp://www.play21.jp/board/formz.cgi?action=res&resno=33007&page=&lognum=101&id=dixq&rln=33065
ここの最後の当たりは参考になりませんか?

#追記
yuさんの書かれているあたり(enter_boss(1);の前)に書いてみたら消えたのですが、すずめさんは消えてないみたいですね・・・

すずめ

Re:レーザーの画像が残る

#5

投稿記事 by すずめ » 16年前

同じ質問があったんですね。
たいへん失礼しました。
実はその質問も途中まで読んでいたんですが、
別の問題だと思って最後まで読みませんでした。
最後のほうに、私と同じトラブルが書かれていたとは
きずきませんでした。
参考にさせていただきます。

すずめ

Re:レーザーの画像が残る

#6

投稿記事 by すずめ » 16年前

新しく35章をすべてサンプルを使用して
作り直して試してみました。

yuさん、pookaさんの言うとおり
enter_boss(1)の前に書いたら
見事に消えました。

いままでは簡単なシューティングゲームなどを
作っていたので、memsetなど使ったことがなく
たいへん勉強させていただいています。

これからもよろしくお願いします。

Dixq (管理人)

Re:レーザーの画像が残る

#7

投稿記事 by Dixq (管理人) » 16年前

すみません、初期化漏れですorz
配布用のコード全部修正しておきます^^;

いやはや何か間違いがあると直すのにスーパー苦労するので大変です(汗
一括置換は他のトラブルを招きそうで怖いし・・。


これからも何か間違いなどありましたがご指摘お願いしますm(_ _;)m

すずめ

Re:レーザーの画像が残る

#8

投稿記事 by すずめ » 16年前

管理人さん、いつもお世話になっています。
いままでやりたくでもできなかったことも
100倍くらいのことが分かりやすく解説されて
いるので、ここ数ヶ月毎日勉強させてもらっています。
ほんとにありがとうございます。

閉鎖

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