トップページ > 過去ログ > 記事閲覧
←キーと↑キーとスペースキーが同時に入力されない
名前:SAI 日時: 2010/11/01 00:29

なぜか←と↑とスペースキーが同時に認識されていないようです。他のキー+スペースは大丈夫のようですが。 これはジャンプのコードを改造したものです。 #include "DxLib.h" int PlayerX , PlayerY ; int JumpPower ; int PlayerGraph ; char GetHitKeyStateAll_Key[256]; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { SetGraphMode( 640 , 480 , 16 ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // 描画先画面を裏画面にセット SetDrawScreen( DX_SCREEN_BACK ) ; // グラフィックのロード PlayerGraph = LoadGraph( "b.png" ) ; // キャラクターの初期データをセット PlayerX = 0 ; PlayerY = 0 ; JumpPower = 0 ; // ループ while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { GetHitKeyStateAll( GetHitKeyStateAll_Key ); if(GetHitKeyStateAll_Key[KEY_INPUT_UP]!=0) PlayerY -= 3 ; // 上を押していたら上に進む if(GetHitKeyStateAll_Key[KEY_INPUT_DOWN]!=0) PlayerY += 3 ; // 下を押していたら下に進む if(GetHitKeyStateAll_Key[KEY_INPUT_RIGHT]!=0) PlayerX += 3 ; // 右を押していたら右に進む if(GetHitKeyStateAll_Key[KEY_INPUT_LEFT]!=0) PlayerX -= 3 ; // 左を押していたら左に進む // 落下処理 PlayerY -= JumpPower ; // 落下加速度を加える JumpPower -= 1 ; // もし地面についていたら止まる if( PlayerY > 300 ) { PlayerY = 300 ; JumpPower = 0 ; } // ジャンプボタンを押していて、地面についていたらジャンプ if(GetHitKeyStateAll_Key[KEY_INPUT_SPACE]!=0 && PlayerY == 300 ) JumpPower = 20 ; // 画面を初期化する ClearDrawScreen() ; // プレイヤーを描画する DrawGraph( PlayerX , PlayerY , PlayerGraph , TRUE ) ; // 裏画面の内容を表画面に反映させる ScreenFlip() ; } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Page: 1 |

Re: ←キーと↑キーとスペースキーが同時に入力されない ( No.1 )
名前:いっち 日時:2010/11/01 01:25

私の環境では問題ないように見受けられます。 ご使用のキーボードの仕様、または、故障と言うことも考えられますので もしお手元に他(社製)のキーボードがあればお試しになって下さい。 事象の確認がしづらかったのでテストコードを作ってみました。 //- テストコード -// #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ); if ( DxLib_Init( ) == -1 ) return -1; SetDrawScreen( DX_SCREEN_BACK ); int StrColor = GetColor( 255, 255, 255 ); char key_state[256]; while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { GetHitKeyStateAll( key_state ); ClearDrawScreen( ); for ( int i = 0; i < 256; i ++ ) { DrawFormatString( i % 16 * 40, i / 16 * 30, StrColor, "%s", key_state[i] ? "○" : "×" ); } ScreenFlip( ); } DxLib_End( ); return 0; }
Re: ←キーと↑キーとスペースキーが同時に入力されない ( No.2 )
名前:SAI 日時:2010/11/01 10:44

回答ありがとうございます。 どうやらこちらが原因だったようですね。失礼いたしました。 なお、プログラムを使わせていただき、確認したところ、↑と←と同時に使えないのはGHBNとスペースでした。 故障とは思えないのでどうやらそういう仕様のようです。 ありがとうございました。

Page: 1 |