enterを押すとロード画面に行くようにしているのですが、enterを二回押さないと
ロード画面に行きません。なぜなのでしょうか?お願いします。以下ソースです。
-----start.cpp--------
#include"DxLib.h"
void choice(int y,int str1,int str2)
{
LoadGraphScreen(215,y,"hagure.bmp",TRUE);
DrawFormatStringToHandle(220,120,GetColor(255,255,255),str1,"UNTITLED");
DrawFormatStringToHandle(250,260,GetColor(255,255,255),str2,"START");
DrawFormatStringToHandle(250,280,GetColor(255,255,255),str2,"CONTINUE");
}
void ContinueScreen(int str1)
{
ClearDrawScreen();
DrawFormatStringToHandle(220,120,GetColor(255,255,255),str1,"ロード画面");
WaitKey();
}
void start(void)
{
int str1,str2,y=260;
int DownOshita=0,NewDown=0,OldDown=0,DownPusingCounter=0;
int UpOshita=0,NewUp=0,OldUp=0,UpPushingCounter=0;
char keybuf[256];
str1=CreateFontToHandle("MS 明朝",40,5,DX_FONTTYPE_NORMAL);
str2=CreateFontToHandle("MS 明朝",20,3,DX_FONTTYPE_NORMAL);
SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定
while(1){
ClearDrawScreen(); // 裏画面のデータを全て削除
GetHitKeyStateAll( keybuf ) ; // すべてのキーの状態を得る
if( keybuf[ KEY_INPUT_ESCAPE ] == 1 ) exit(1); // Escapeが押されたら終了
choice(y,str1,str2);
/*下キー判定*/
if( keybuf[ KEY_INPUT_DOWN ] == 1 ) // 下キーが押されたら
NewDown=1; // 今押されている状態に
else // 押されていなかったら
NewDown=0; // 今押されていない状態に
if( OldDown==0 && NewDown==1 ) // 前回押されてなく、今回押されていたら
DownOshita=1; // たった今押された状態に
else // それ以外なら
DownOshita=0; // たったいま押されていない状態に
if( OldDown==1 && NewDown==1 ) // 前回も押され、今回も押されていたら
DownPusingCounter++; // 押しっぱなしカウンターを増加
else
DownPusingCounter=0;
if( DownOshita==1 || DownPusingCounter>30){ // たった今押したか、30カウンター以上押しっぱなしなら
if(DownPusingCounter>30) // 30カウンター以上押しっぱなしならカウンターを27へ
DownPusingCounter=27; // オートの場合4回に1回下に下がる。
if(y==260)y=280;
else // y座標が280なら(選択が一番下なら)
y=260; // 選択座標を一番上に
}
OldDown=NewDown;
/*上キー判定*/
if(keybuf[KEY_INPUT_UP]==1) NewUp=1;
else NewUp=0;
if(OldUp==0 && NewUp==1) UpOshita=1;
else UpOshita=0;
if(OldUp==1 && NewUp==1) UpPushingCounter++;
else UpPushingCounter=0;
if(UpOshita==1 || UpPushingCounter>30){
if(UpPushingCounter>30) UpPushingCounter=27;
if(y==280) y=260;
else y=280;
}
OldUp=NewUp;
if(keybuf[KEY_INPUT_RETURN]==1 && y==280)
ContinueScreen(str1);
if( ProcessMessage() == -1 ) break ; //エラーが起きたら終了
ScreenFlip() ; // 裏画面データを表画面へ反映
}
}