キーを軽く押したら連射みたいな機能になる。
Posted: 2008年7月01日(火) 01:18
選択肢を作ってみました。
しかし、次のページに移動するボタンと、元のページに戻るボタンを同じボタンに設定してしまうと
進む→戻るが少しキーを押しただけで、何度か連続で入力されてしまうようになります。
これが原因で、選択肢を作っても、キーを軽く押しただけで3つ先の選択肢まで飛んだりしてしまいます。
解決策をお願いします。
ソース。
しかし、次のページに移動するボタンと、元のページに戻るボタンを同じボタンに設定してしまうと
進む→戻るが少しキーを押しただけで、何度か連続で入力されてしまうようになります。
これが原因で、選択肢を作っても、キーを軽く押しただけで3つ先の選択肢まで飛んだりしてしまいます。
解決策をお願いします。
ソース。
#include "DxLib.h"
int function_status=0,White;
char KeyBuf[ 256 ] ;
void A(){
DrawString(100,100,"選択肢A",White);
DrawString(300,100,"選択肢B",White);
if(KeyBuf[KEY_INPUT_A]==1)
function_status=1;
else if (KeyBuf[KEY_INPUT_B]==1)
function_status=2;
}
void B(){
DrawString(100,100,"選択肢C",White);
DrawString(300,100,"選択肢D",White);
if(KeyBuf[KEY_INPUT_A]==1)
function_status=0;
else if(KeyBuf[KEY_INPUT_B]==1)
function_status=2;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; //ウィンドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
White = GetColor( 255 , 255 , 255 ) ; //色の取得
SetDrawScreen( DX_SCREEN_BACK ) ; // 描画先を裏画面に設定
while( 1 ){
ClearDrawScreen(); // 裏画面のデータを全て削除
GetHitKeyStateAll( KeyBuf ) ; // すべてのキーの状態を得る
switch(function_status){
case 0:
A();
break;
case 1:
B();
break;
default:
DxLib_End() ; // DXライブラリ使用の終了処理
return 0;
break;
}
if( ProcessMessage() == -1 ) break ; //エラーが起きたら終了
ScreenFlip() ; // 裏画面データを表画面へ反映
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}