ページ 11

弾幕それぞれの残り時間

Posted: 2013年6月06日(木) 10:32
by ちょいや
龍神録プログラミングの館のコードを改造しているのですが、弾幕が自爆する(?)時間はendtimeで決めてるんですよね?
それを弾幕ごとに時間を決めるにはどうすればよいですか?
endtimeを見ると99*60って書いてあってこれは「99秒で次弾幕へ」ってことですよね?
ここを改造すればいいと思ってjikanという変数を用意し、
static int jikan;
if(boss.knd==0)//最初の弾幕の残り時間は
jikan=10;//10秒
else if(boss.knd==1)//次の弾幕の残り時間は
jikan=1;//1秒

boss.endtime=jikan*60

と改造したところ最初の弾幕(boss.knd==0)と次の弾幕(boss.knd==1)の自爆する時間は同じでした(たぶん)。
jikanでendtimeを変更することは成功したみたいですが、jikanの値は変わってないようです。
どう改造したらうまくいくですか?

Re: 弾幕それぞれの残り時間

Posted: 2013年6月06日(木) 14:54
by 超絶右留斗羅天才プログラマー
うーん、確かにその部分だけ見ると正しい気がしますね。

別の所に原因があるように思います。

boss.kndが0と1以外の値になるような場所があったり、
載せてくれたプログラムが実は実行後一回しか通らないような場所であるがために、
正しく動かない可能性があります。

何か心当たりがあれば是非その部分のプログラムも載せていただけると嬉しいです(*´∀`)

Re: 弾幕それぞれの残り時間

Posted: 2013年6月06日(木) 21:56
by Dixq (管理人)
boss_shot_bulletH001()
等の弾幕の関数内の先頭で.endtimeをセットしてはいかがですか?(最初の一度しか通らないように注意)

Re: 弾幕それぞれの残り時間

Posted: 2013年6月10日(月) 15:21
by ちょいや
>>載せてくれたプログラムが実は実行後一回しか通らないような場所であるがために、
>>正しく動かない可能性があります。

ありがとうございました。
おそらくこれが原因でした。boss_shot_main()に弾幕が登録されるたびにi++してif(i==0){略 として解決できました。
しかし、これだと弾幕が増えるたびにコードが長くなることに…

>>boss_shot_bulletH001()
>>等の弾幕の関数内の先頭で.endtimeをセットしてはいかがですか?(最初の一度しか通らないように注意)

龍神録プログラミングの館のコードを改造しているだけでC++は理解できてないので実装方法の検討つきませんが、頑張ってみます。
ありがとうございました。