バッターがスイングする時の画像の切り替えがうまくいきません。
具体的に言いますとバッター画像を三枚「構え」、「振り始め」、「振り終わり」と用意しており
特定のキーを押すと「構え」→「振り始め」→(0.5秒程経過)→「振り終わり」
という風に切り替えて表示させたいのですが切り替えが早すぎるのか
キーを押していると三枚の画像が全て重なったようになってしまいます。
wait等を使うと全ての処理が止まってしまうのであまり使いたくないのですが
良い方法は無いでしょうか?よろしくお願いします。
以下ソース
/*yakyuu*/
#include<DxLib.h>
//プロトタイプ宣言
void grand();
// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
// ウインドウモードに変更
ChangeWindowMode( TRUE );
// DXライブラリ初期化
if( DxLib_Init() == -1 )
{
return 0;
}
SetDrawScreen( DX_SCREEN_BACK );
int i;//ループ用
/////////////////ゲーム用///////////////////
int BallG;//ボール画像
int BallY=200;//ボール高さ
int BallX=320;//ボール横
double BallZ=1;//ボール奥行き
int Cr ;
int draw;//背景描写用
bool PUSH=true;
Cr= GetColor( 255 , 255, 255 ) ; // 白色の値を取得
int batter[3];//バッターの画像
int count;
LoadDivGraph( "bat.bmp" , 3, 1 , 3, 310 , 270, batter ); // 画像の分割読み込み
while(1)
{
if( ProcessMessage() != 0 )
{
// メッセージ処理
break;//ウィンドウの×ボタンが押されたらループを抜ける
}
ClearDrawScreen(); // 画面を消す
PUSH=true;
grand();//グランド描写
DrawGraph( 105, 250, batter[0], TRUE ); //バッター画像
DrawCircle( BallX , BallY , BallZ , Cr , TRUE) ;// 円を描画
if(BallZ<12)
{
BallZ=BallZ+0.5;
}
BallY=BallY+8;
if( CheckHitKey( KEY_INPUT_Z) == 1 && PUSH==true)//Zが入力されている
{
PUSH=false;
DrawGraph( 105, 250, batter[1], TRUE ); //バッタースイング画像
count = GetNowCount();
while(( GetNowCount() - count) <= 50)
{
DrawGraph( 105, 250, batter[2], TRUE ); //バッタースイング2画像
}
}
ScreenFlip(); //裏画面を表画面に反映
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0;
}
void grand()
{
int Cr ;
int Cr2;
int Cr3;
int Cr4;
Cr= GetColor( 255 , 255, 255 ) ; // 白色の値を取得
Cr2= GetColor(0,120,0);//緑
Cr3= GetColor(186,125,50);//茶色
Cr4= GetColor(136,75,20);//こい茶色
DrawBox( 0 , 0 , 640 , 480 , Cr2 , TRUE) ;//緑で塗りつぶす
DrawOval(320,540,1000,500,Cr3,TRUE);//グランド
DrawOval(320,220,70,20,Cr4,TRUE);//まうんど
DrawBox(290,425,350,440,Cr,TRUE);//ホームベース
DrawTriangle( 290, 440, 350, 440, 320, 455, Cr, TRUE);//ホームベース2
DrawLine(270,410,270,480,Cr,5);//バッターボックス
DrawLine(270,410,130,410,Cr,5);//バッターボックス2
DrawLine(130,410,130,480,Cr,5);//バッターボックス3
DrawBox(370,410,510,480,Cr,FALSE);
DrawLine(370,410,370,480,Cr,5);//バッターボックス1
DrawLine(370,410,510,410,Cr,5);//バッターボックス2
DrawLine(510,410,510,480,Cr,5);//バッターボックス3
DrawLine(200,410,0,310,Cr,5);//ライン左
DrawLine(440,410,640,310,Cr,5);//ライン右
}