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

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

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

#1

投稿記事 by Watasuke » 1週間前

お世話になっております。
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
記事: 6065
登録日時: 8年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 1週間前

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

Watasuke
記事: 10
登録日時: 2週間前
連絡を取る:

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

#3

投稿記事 by Watasuke » 1週間前

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

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

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

#4

投稿記事 by みけCAT » 1週間前

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

コード:

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

コード:

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

Watasuke
記事: 10
登録日時: 2週間前
連絡を取る:

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

#5

投稿記事 by Watasuke » 1週間前

コード:

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言語何でも質問掲示板” へ戻る