トップページ > 過去ログ > 記事閲覧
上下左右キーについて
名前:ティディペン 日時: 2007/03/25 05:13

上下左右キーを三つ以上押すと、キーを押したことを正しく認知しないのですが、どうすれば正しく認知するようになるでしょうか? ちなみに自分は、下のプログラムでチェックしました。 #include "DxLib.h" int g; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int Key; if(DxLib_Init()==-1)return -1; SetDrawScreen(DX_SCREEN_BACK); g=LoadGraph("g.bmp"); for(;;) { Key=GetJoypadInputState(DX_INPUT_KEY_PAD1); ClearDrawScreen(); if(Key&PAD_INPUT_UP)DrawGraph(300,0,g,FALSE); if(Key&PAD_INPUT_DOWN)DrawGraph(300,400,g,FALSE); if(Key&PAD_INPUT_RIGHT)DrawGraph(500,200,g,FALSE); if(Key&PAD_INPUT_LEFT)DrawGraph(100,200,g,FALSE); ScreenFlip(); if(ProcessMessage()==-1)break; if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break; } DxLib_End(); return 0; }

Page: 1 |

Re: 上下左右キーについて ( No.1 )
名前:「たく」 日時:2007/03/25 21:05

GetJoypadInputState コマンドは ジョイスティックの入力を前提として います。ジョイスティックは普通、 3つ以上の方向キーは入力できません。 (上と下、右と左は排他入力です) DDR マットの場合はまた話は別ですが、 ジョイスティックによる三方向以上の 入力は無理かもしれませんが、矢印キー による入力なら GetHitKeyStateAll() 関数 でキー入力状態を取得して、それぞれの キー CTRL_CODE_LEFT、// ←キー CTRL_CODE_RIGHT // →キー CTRL_CODE_UP // ↑キー CTRL_CODE_DOWN // ↓キー の状態を取得すればOKだと思います。
Re: 上下左右キーについて ( No.2 )
名前:ティディペン 日時:2007/03/25 22:57

返信ありがとうございます。 早速試してみたいと思います。
Re: 上下左右キーについて ( No.3 )
名前:管理人 日時:2007/03/26 14:02

 ティディペンさんどうも、DXライブラリの管理人です。  方向キーの入力が3つ以上同時に検出出来ない問題は、キーボードのハードウェア的な 仕様が原因ですので、ソフトウエア側で解決することは出来ません。 (なので「10キー同時押し検出可能!」等を売りにしているキーボードも存在します)  詳しくは Wikipedia のキーボードの項の「ロールオーバー」についか書かれている部分を ご覧になってみて下さい。 http://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89

Page: 1 |