はじめまして、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;
}
以上
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
それはDirectXそのものじゃなく、DirectXをラッパーして開発を容易にしたDXライブラリですね。
基本的にフレーム(1/60秒)毎に描画しないと行けないので、WaitTimer()を使うのは基本的に間違いです。フレーム数を120回カウントすれば2秒になりますね。
ここのサンプルを参考にしては?
「DXライブラリ置き場 サンプルプログラム」
http://homepage2.nifty.com/natupaji/DxLib/dxprog …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報