ページ 1 / 1
レーザーの画像が残る
Posted: 2009年5月24日(日) 09:04
by すずめ
こんにちは、いつもお世話になっています。
龍神録プログラミングの館の35章以降なんですが、
bossの弾幕でレーザーが発射されている時のことです。
レーザーが発射された状態でbossのhp(体力)がゼロになるとき、
つまり画面上のメーターがゼロになる時、次の弾幕に
移ってもレーザーの画像が残ったままになります。
レーザーを売っていない状態で次の弾幕に移るときは
大丈夫です。
まだ初心者なものですから、この章あたりまでくると
何度読み直しても分かりません。
ためしに、lazer[0].cntを表示したところ、
lazerは320カウントで繰り返しています。
lazerが発射されていない時にメーターがゼロになると
カウントは320で止まったままで次の弾幕に移ります。
lazerが発射された状態でメーターがゼロになると
カウントはカウントしつづけ、lazerの画像が残ったまま
次の弾幕に移ります。
lazer.cnt++;が記述されているところも見つけられませんでした。
アドバイスをお願いします。
Re:レーザーの画像が残る
Posted: 2009年5月24日(日) 09:17
by yu
レーザーが初期化されていないのではないでしょうか?
memset(lazer,0,sizeof(lazer_t)*LAZER_MAX);
を適当な場所に書いてやるといいと思います
#追記
#35章だとboss_shot.cpp内の167行当たりに挿入してやればよいと思います。
後、レーザーをカウントしている場所は
shot.cpp 内の lazer_calc() の中 です
Re:レーザーの画像が残る
Posted: 2009年5月24日(日) 11:40
by すずめ
返信ありがとうございます。
何箇所か入れてみたんですが、だめでした。
//ボスの弾幕メイン
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ばかり
探していたのできずきませんでした。
ありがとうございました。
Re:レーザーの画像が残る
Posted: 2009年5月24日(日) 11:57
by pooka
ttp://www.play21.jp/board/formz.cgi?action=res&resno=33007&page=&lognum=101&id=dixq&rln=33065
ここの最後の当たりは参考になりませんか?
#追記
yuさんの書かれているあたり(enter_boss(1);の前)に書いてみたら消えたのですが、すずめさんは消えてないみたいですね・・・
Re:レーザーの画像が残る
Posted: 2009年5月24日(日) 12:33
by すずめ
同じ質問があったんですね。
たいへん失礼しました。
実はその質問も途中まで読んでいたんですが、
別の問題だと思って最後まで読みませんでした。
最後のほうに、私と同じトラブルが書かれていたとは
きずきませんでした。
参考にさせていただきます。
Re:レーザーの画像が残る
Posted: 2009年5月24日(日) 13:14
by すずめ
新しく35章をすべてサンプルを使用して
作り直して試してみました。
yuさん、pookaさんの言うとおり
enter_boss(1)の前に書いたら
見事に消えました。
いままでは簡単なシューティングゲームなどを
作っていたので、memsetなど使ったことがなく
たいへん勉強させていただいています。
これからもよろしくお願いします。
Re:レーザーの画像が残る
Posted: 2009年5月24日(日) 20:29
by Dixq (管理人)
すみません、初期化漏れですorz
配布用のコード全部修正しておきます^^;
いやはや何か間違いがあると直すのにスーパー苦労するので大変です(汗
一括置換は他のトラブルを招きそうで怖いし・・。
これからも何か間違いなどありましたがご指摘お願いしますm(_ _;)m
Re:レーザーの画像が残る
Posted: 2009年5月24日(日) 23:49
by すずめ
管理人さん、いつもお世話になっています。
いままでやりたくでもできなかったことも
100倍くらいのことが分かりやすく解説されて
いるので、ここ数ヶ月毎日勉強させてもらっています。
ほんとにありがとうございます。