



40a. 「キーがどれ位押されたか」を判定する関数
DXライブラリ本体にはキー入力において、「押しているか」「押していないか」しか調べる関数がありません。
しかし、「どれ位押し続けられたか」を調べたい事は必ず出てくると思います。
そこで、キーが押されているかどうかに、加え、「どれ位押し続けられたか」を判定する関数を作ってみます。
これはGetHitKeyStateAllという本家の関数を拡張した物です。
この関数を呼ぶ代わりにこれから実装するGetHitKeyStateAll_2を利用して下さい。
元の関数の仕様は是非チェックしておいて下さい。
int GetHitKeyStateAll( char *KeyStateBuf ) ;
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html#R5N28
このフォーマットに習ってGetHitKeyStateAll_2関数の仕様を書いてみますと・・。
|
| サンプル エンターが押されたカウントを表示し、押された瞬間画面を白くする #include "DxLib.h"
int GetHitKeyStateAll_2(int KeyStateBuf[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key[i]==1) KeyStateBuf[i]++;
else KeyStateBuf[i]=0;
}
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
int Key[256];
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
DrawFormatString(0,0,GetColor(255,255,255),"%d",Key[KEY_INPUT_RETURN]);//エンター入力カウント
if(Key[KEY_INPUT_RETURN]==1)//今の瞬間押されたら
DrawBox(0,0,640,480,GetColor(255,255,255),TRUE);//画面全体を白い四角で表示
ScreenFlip();
}
DxLib_End();
return 0;
}
|
- Remical Soft -