キー入力の制御について
Posted: 2009年2月24日(火) 20:15
こんばんは。
現在、プログラミングの館を参考にしてゲームを作る基礎段階を勉強しているのものです。
一つのボタンで文字の表示、非表示を切り替えるようなプログラムを作りたいのですが上手く作れません。
ソースはこのようになっています。
このソースで動かすと何も反応がないように見えます。
また、過去ログのNo:18003に似たような症状に思えるものの解決策があったのですが…
その示されていた解決策である
1:次のページに移動するボタンと元のページに戻るボタンを別のものにする
2:ページを移動した後、しばらく全ての入力を受け付けないようにする
3:ボタンの押しっ放しを無効にする
のうち、1番は上手くできました。
しかし、やはり同じボタンで制御したいので2番か3番の方を試してみたいと思ったのですがどのように制御したらよいのかが分かりません。
または、他の方法があるのでしょうか?
どなたかアドバイスしていただけないでしょうか。
よろしくお願いします。
環境は
OS:Windows XP sp3
コンパイラ:コンパイラ名 : VC++ 2008EE
です。
現在、プログラミングの館を参考にしてゲームを作る基礎段階を勉強しているのものです。
一つのボタンで文字の表示、非表示を切り替えるようなプログラムを作りたいのですが上手く作れません。
ソースはこのようになっています。
#include "DxLib.h" int Key[256]; int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){ char GetHitKeyStateAll_Key[256]; GetHitKeyStateAll( GetHitKeyStateAll_Key ); for(int i=0;i<256;i++){ if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++; else GetHitKeyStateAll_InputKey=0; } return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE);//ウィンドウモード if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化 int para,white; para=0; white=GetColor( 255 , 255 , 255 ) ; while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){ //↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない //ココ!! if(para==1) DrawFormatString(100,100, white , "ああああ");//文字列表示 if(Key[ KEY_INPUT_A] ==1 && para==0){ para=1; } if(Key[ KEY_INPUT_A] ==1 && para==1){ para=0; } ScreenFlip(); } DxLib_End(); return 0; }
このソースで動かすと何も反応がないように見えます。
また、過去ログのNo:18003に似たような症状に思えるものの解決策があったのですが…
その示されていた解決策である
1:次のページに移動するボタンと元のページに戻るボタンを別のものにする
2:ページを移動した後、しばらく全ての入力を受け付けないようにする
3:ボタンの押しっ放しを無効にする
のうち、1番は上手くできました。
しかし、やはり同じボタンで制御したいので2番か3番の方を試してみたいと思ったのですがどのように制御したらよいのかが分かりません。
または、他の方法があるのでしょうか?
どなたかアドバイスしていただけないでしょうか。
よろしくお願いします。
環境は
OS:Windows XP sp3
コンパイラ:コンパイラ名 : VC++ 2008EE
です。