ページ 11

時間

Posted: 2009年4月16日(木) 12:15
by とりsan
DXライブラリを使って、今シューティングを作っています。
n秒後にスクロールの移動量を変えたいのですが、どうもtimeGetTime関数でうまくいきません。
ご教授お願いいたします。

void BGI_scroll(){

int nowTime,beforeTime;
nowTime = GetNowCount(); //現在時間を取得

//横スクロール
rollX = (rollX - 3) % 640; //0~680を繰り返す
DrawGraph(rollX+640, 0, backImg, true);
DrawGraph(rollX, 0, backImg, true);

if(スクロールを変える条件){
if(時間の差分 > n秒後){ 
rollX = スクロールを変える値;
}
}

な感じで書いています。

Re:時間

Posted: 2009年4月16日(木) 12:34
by s-rush
GetNowCountはWindowsが起動してからの経過時間ですね。
なので、上記のプログラムだと、意図した時間を得ることができません。

時間の差分は
 GetNowCount() - nowTime
で求めることができますよ。

したがって、2つ目のif文は
 if( GetNowCount()-nowTime > n*1000 )
という感じでいいのではないですか??

1つ目のif文の条件は分からないのでスルー^^;

Re:時間

Posted: 2009年4月16日(木) 19:10
by kazuoni
>GetNowCount()-nowTime

関数の呼び出し方、仕様がわからないので何とも言えませんが、
関数に入ったときからの差の時間ではないような気がします・・・。(あくまで予想です)
n秒後とはいつからのn秒後ですか?
あるイベントが起きてからn秒後なのか、
アプリ起動時からn秒後なのか、それこそ、Windowsが起動してからn秒後なのか・・・
そのあたりを明らかにする必要がある気がするのですが・・・?

Re:時間

Posted: 2009年4月16日(木) 22:28
by s-rush
>>関数の呼び出し方、仕様がわからないので何とも言えませんが、
>>関数に入ったときからの差の時間ではないような気がします・・・。
単純に時間の差分を求めるという意味で回答したのですが^^;

確かにkazuoniさんのおっしゃる通り、仕様が不十分ですので何とも言えませんでしたね。

ただ、Windowsが起動してから、あるいはアプリが起動してからn秒後っていうのは
少し考えづらいです。(このような条件のSTGは見たことないです)

ステージが始まってからn秒後であるなら、
ステージの開始直後に
 nowTime = GetNowCount();
を実行し、
 if( GetNowCount()-nowTime > n*1000 )
で条件分岐をしてあげればいいと思います。