音ゲーのようなものを作っているのですが、GameCountという大本のカウンターを作って、それに合わせるようにしてみたところ
BGMのテンポの1拍が25フレームと26フレームの間のようなので25.5くらいに設定したいのですが、
if((int)(GameCount%25.5) == 0)のようにしても実行できません。
GameCountを25.5で割ったあまりを四捨五入した数値が0のときにタイミングを合わせるにはどうすればよいでしょうか?
整数カウントをdouble型で割ってから四捨五入して整数値に直したい
Re: 整数カウントをdouble型で割ってから四捨五入して整数値に直したい
たしかC言語で”%”演算子は実数の計算には使えなかったと思います
恐らくそれが原因で思った通りの動作をしていないのでないでしょうか?
恐らくそれが原因で思った通りの動作をしていないのでないでしょうか?
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 整数カウントをdouble型で割ってから四捨五入して整数値に直したい
そもそもGameCountが25.5の倍数の値を確実に指すのでしょうか?
もし指さないのなら、例え式がうまくできても条件を満たす事は無いと思いますが。
※ 比較する時に10倍してintにした後255で余りが0かif文の条件にすれば出来ますが、float→intの変換誤差やらそのGameCountの精度がそこまで高いのか?など問題が色々あります。
もし指さないのなら、例え式がうまくできても条件を満たす事は無いと思いますが。
※ 比較する時に10倍してintにした後255で余りが0かif文の条件にすれば出来ますが、float→intの変換誤差やらそのGameCountの精度がそこまで高いのか?など問題が色々あります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
Chalaza
Re: 整数カウントをdouble型で割ってから四捨五入して整数値に直したい
すみません。わざわざdoubleやfloat型にしなくても
『9回、25フレームで測ったら1回26フレームで測る』のように設計したらうまくいきました。
この割合を変えれば色んな曲で再現できそうです。
ありがとうございました。
『9回、25フレームで測ったら1回26フレームで測る』のように設計したらうまくいきました。
この割合を変えれば色んな曲で再現できそうです。
ありがとうございました。