ページ 11

時間の処理がわかりません

Posted: 2010年9月29日(水) 12:58
by syanneru
C言語暦半年です。
現在シューティングゲームを製作中なのですが、

キーを押す

フラグ1

2秒後にフラグ2

3秒後にフラグ3

という処理をしたいのですが、時間を計る関数がうまくいきません。

Re:時間の処理がわかりません

Posted: 2010年9月29日(水) 16:46
by たかぎ
> 時間を計る関数がうまくいきません。

何をやってどううまくいかないのかを詳細かつ正確に書きましょう。
環境も不明なので、まずは利用規約を熟読することをお勧めします。

Re:時間の処理がわかりません

Posted: 2010年9月29日(水) 18:03
by Dixq (管理人)
お使いのライブラリはDXライブラリでしょうか?

もしDXライブラリをお使いで、メインループ部分の構造がゲームプログラミングの館の13章辺りだと仮定します。

int counter=0;

などで、カウンター変数を用意します。
ループの最後に

counter++;

で、1ループで1カウントするようにしておきます。
一般的にモニタは60Hzなので、60ほど値が増加するごとに1秒だと解ります。
例えば60は1秒、120は2秒・・

といった具合です。
これはScreenFlip()で、モニタがリフレッシュするまで待ってくれる為です。
モニタが75Hzなどであれば、1秒は75ずつになります。
このようなばらつきを抑えるには、フレームレートを一定にするか、時間による計算が必要になります。

もし時間から計算したい場合は、GetNowCount関数を用いて計測して下さい。
しかし、時間を基準にするよりフレーム数を基準にする方が簡単なので、前者をお勧めします。
もし言っていることが良く解らなければまた聞いて下さい。