現在時刻をリアルタイムに表示したい
Posted: 2014年9月27日(土) 16:26
タイマーを作りたいのですが、リアルタイムに現在時刻を表示させようとすると今のコードですと止まったままになっています
ScreenFlipの前にDrawFormatStringを書いているのに、何故止まってしまうのでしょうか
それともう一点、カウントダウンと連動して減っていくゲージをDrawBoxで実装したいのですが考え方を教えてほしいです
Cはポインタ以外の基礎は一通り独学で学び、C言語ゲームプログラミングの館の3.1までやりました
使っている開発環境はMicrosoft Visual Studio Express 2013です
宜しくお願いします
ScreenFlipの前にDrawFormatStringを書いているのに、何故止まってしまうのでしょうか
それともう一点、カウントダウンと連動して減っていくゲージをDrawBoxで実装したいのですが考え方を教えてほしいです
Cはポインタ以外の基礎は一通り独学で学び、C言語ゲームプログラミングの館の3.1までやりました
使っている開発環境はMicrosoft Visual Studio Express 2013です
宜しくお願いします
#pragma warning(disable : 4819)
#include "DxLib.h"
// プログラムは WinMain から始まります
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
int StartTime; //起動時の時間を格納する変数
int hour, minute, second; //表示する時間
int set_hour, set_minute, set_second; //セットする時間
SetOutApplicationLogValidFlag(FALSE); //ログ出力をするか否か
ChangeWindowMode(TRUE); // ウインドウモードかフルスクリーンか
SetGraphMode(640, 480, 16); //画面サイズを設定します
SetDrawScreen(DX_SCREEN_BACK); //描画する画面を設定します
if (DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
SetBackgroundColor(0x00, 0x00, 0x00); //背景の色を設定します
set_hour = KeyInputNumber(50, 50, 99, 0, TRUE); //セットする時間数を入力
set_minute = KeyInputNumber(70, 50, 59, 0, TRUE); //セットする分数を入力
set_second = KeyInputNumber(90, 50, 59, 0, TRUE); //セットする秒数を入力
set_hour %= 100; //ESCが押されたときに0にする
set_minute %= 60;
set_second %= 60;
DATEDATA Date;
;
if (set_second == 0 && set_minute == 0 && set_hour == 0)
set_minute = 3; //0時間0分0秒なら3分に合わせる
StartTime = GetNowCount(); //起動時の時間を取得
while (1){
if (ProcessMessage() == -1)break; //ウインドウのメッセージを処理する
GetDateTime(&Date);
second = (GetNowCount() - StartTime) / 1000; //秒に変換
minute = second / 60; //分に変換
second %= 60;
hour = minute / 60; //時間に変換
minute %= 60;
ClearDrawScreen(); //画面に描画されている内容を消します
DrawFormatString(0, 0, 0xFFFFFF, "%d:%02d:%02d", hour, minute, second); //時間を描画します
DrawFormatString(30, 100, GetColor(255, 255, 255), "%d年%d月%d日%時%d分%d秒", Date.Year, Date.Mon, Date.Day, Date.Hour, Date.Min, Date.Sec);
if (set_hour * 360 + set_minute * 60 + set_second <= hour * 360 + minute * 60 + second)
DrawFormatString(0, 50, 0xFFFFFF, "時間になりました"); //時間になったら表示する
ScreenFlip(); //DX_SCREEN_BACKに描画した画像を表示します
}
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}