DXライブラリの残り時間表示

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Watasuke
記事: 10
登録日時: 5年前
連絡を取る:

DXライブラリの残り時間表示

#1

投稿記事 by Watasuke » 5年前

お世話になっております。
DXライブラリでタイピングを作っているのですが、タイマー部分がうまくいきません。

コード:

#define TIME_MIN 5
#define WINDOW_X 1280
#define WINDOW_Y 960
int White = GetColor(255,255,255);

void Timer(){
	sec = (GetNowCount() - GameStartTime)/1000;
	min = (sec/60);
	sec = sec%60;
	if(sec == 0){
		sec = 60;
		if(min == 0)
			min = -1;
	}
	if(sec == 60 && min == TIME_MIN) finish();
	DrawFormatStringToHandle(
	WINDOW_X/2 - GetDrawFormatStringWidthToHandle(text,"SCORE  %03d\n TIME  %01d:%02d",Score,TIME_MIN-1 -min,60-sec)/2,
	WINDOW_Y/2+100,White,text,"SCORE  %03d\n TIME  %01d:%02d",Score,TIME_MIN-1 -min,60-sec);
}
見づらいとは思いますがこのようなコードを作っています。
制限時間TIME_MIN分(この場合は5分)で、経過時間ではなく残り時間(4:00や3:21のような)を表示したいのです。
が、これだと残り3分の時に2:00と表示されてしまい、困っています。
どのように上のコードを変えればいいのですか?

情報不足でしたら補足します。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: DXライブラリの残り時間表示

#2

投稿記事 by みけCAT » 5年前

分と秒に分けてから残り時間に変換しようとして複雑になっているようなので、
分ける前に60*TIME_MIN-secで残り時間[秒]を出して、
それを分と秒に分けて表示するのがいいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Watasuke
記事: 10
登録日時: 5年前
連絡を取る:

Re: DXライブラリの残り時間表示

#3

投稿記事 by Watasuke » 5年前

回答ありがとうございます。
どこをどのように変えればいいのかわかりません・・・

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: DXライブラリの残り時間表示

#4

投稿記事 by みけCAT » 5年前

この方法のままでいくなら、secを変える分の補正を

コード:

		if(min == 0)
			min = -1;
と特殊な場合のみするのではなく、

コード:

		min--;
と一般の場合についてするようにするのがいいでしょう。
finish()を呼ぶかの判定も、それに合わせて変えたほうがいいかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Watasuke
記事: 10
登録日時: 5年前
連絡を取る:

Re: DXライブラリの残り時間表示

#5

投稿記事 by Watasuke » 5年前

コード:

void Timer(){
	sec = (GetNowCount() - GameStartTime)/1000;
	min = (sec/60);
	sec = sec%60;
	if(sec == 0){
		sec = 60;
		min--;
	}
	if(sec == 60 && min == TIME_MIN-1) finish();
}
これでできました!ありがとうございました!

返信

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