時間

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
とりsan

時間

#1

投稿記事 by とりsan » 16年前

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 = スクロールを変える値;
}
}

な感じで書いています。

s-rush

Re:時間

#2

投稿記事 by s-rush » 16年前

GetNowCountはWindowsが起動してからの経過時間ですね。
なので、上記のプログラムだと、意図した時間を得ることができません。

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

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

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

kazuoni

Re:時間

#3

投稿記事 by kazuoni » 16年前

>GetNowCount()-nowTime

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

s-rush

Re:時間

#4

投稿記事 by s-rush » 16年前

>>関数の呼び出し方、仕様がわからないので何とも言えませんが、
>>関数に入ったときからの差の時間ではないような気がします・・・。
単純に時間の差分を求めるという意味で回答したのですが^^;

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

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る