• 締切済み

DirectXの表示について

はじめまして、sakamoto-kanadeと申します。 DirectXについての質問です。 言語はC++です。 スクエアエニックス様の代表作でもある、ドラゴンクエストの戦闘シーンのメッセージを再現したいと思います。 しかし、私のソースではメッセージが瞬間表示なってしまいます。 期待値では、1~2を繰り返すことです。 1) メッセージ表示 2) 2秒待ち 以下、現在のソースの状態です。 ※重要な場所以外の処理は簡略しています。 DirectXで、メッセージを表示したまま処理をとめる場合はどうするのでしょうか? それができない場合のロジックをご教授いただけないでしょうか? よろしくお願いいたします。 TCHAR szMsg[MAX_PATH]; unsigned int iFlag= 0; int iColorWhite = GetColor(255,255,255); int WinMain() {   if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK, DxLib_Init() == -1 )return -1; // メイン関数   while( !ProcessMessage() && !ClearDrawScreen() )   { Zeromemory(szMsg, sizeof(szMsg)); srand((unsigned int)time(NULL)); // 0~2の乱数を発生 iFlag = 0 + (int)(rand() * (2-0+1.0)/(1.0+RAND_MAX)); Battle_Msg(iFlag, szMsg); DrawFormatString( 20, 350, iColorWhite, _T("%s") ,szMsg); ScreenFlip(); } void Battle_Msg(int i, *szMsg) { if( i == 0){ _tcscpy( szMsg, _T("主人公の攻撃")); } if( i == 1){ _tcscpy( szMsg, _T("主人公の攻撃")); } if( i == 2){ _tcscpy( szMsg, _T("主人公の攻撃")); } // 一秒待つ WaitTimer(2000); return; } 以上

みんなの回答

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

それはDirectXそのものじゃなく、DirectXをラッパーして開発を容易にしたDXライブラリですね。 基本的にフレーム(1/60秒)毎に描画しないと行けないので、WaitTimer()を使うのは基本的に間違いです。フレーム数を120回カウントすれば2秒になりますね。 ここのサンプルを参考にしては? 「DXライブラリ置き場 サンプルプログラム」 http://homepage2.nifty.com/natupaji/DxLib/dxprogram.html

関連するQ&A