DXライブラリで複数キーの同時入力について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Y.I

DXライブラリで複数キーの同時入力について

#1

投稿記事 by Y.I » 14年前

シューティングゲームのひな型プログラムを作成していたのですが、
GetHitKeyStateAll()関数で3キー同時押しを認識する場合と、しない場合があったので質問させて下さい。

具体的には、↑→キー入力中(右上移動中)zキー(ショット)などは反応するのですが、
←↑キー入力中(左上移動中)zキー(ショット)などは3ボタン目を認識してくれません。
ジョイパッドは問題なく3ボタン同時押しを認識します。

下記の入力クラスから、ゲームのメインループ中、update()メソッドで毎フレーム入力を感知し、
KEY_INPUT_LEFT などの定数で指定したKey[]の値によってプレイヤーキャラを操作しています。

同じような経験のある方、回答よろしくお願いします。


// 入力クラス ---------------------------------------------------------------------------------- //
class Input
{
private:
int Key[256];
public:
Input( void ) { for( int i=0; i<256; i++ ) { Key = 0; } };
void update( void );
int getKey( int a ) { if ( a >= 0 && 255 >= a ) { return Key[a]; } else return 0; };
};

void Input::update( void )
{
int padInput = GetJoypadInputState( DX_INPUT_PAD1 );
char keyBuff[256];
GetHitKeyStateAll( keyBuff );

if ( ( padInput & PAD_INPUT_LEFT ) || keyBuff[KEY_INPUT_LEFT] ) { Key[KEY_INPUT_LEFT] ++; }
else { Key[KEY_INPUT_LEFT] = 0; }
if ( ( padInput & PAD_INPUT_UP ) || keyBuff[KEY_INPUT_UP] ) { Key[KEY_INPUT_UP] ++; }
else { Key[KEY_INPUT_UP] = 0; }
if ( ( padInput & PAD_INPUT_RIGHT ) || keyBuff[KEY_INPUT_RIGHT] ) { Key[KEY_INPUT_RIGHT] ++; }
else { Key[KEY_INPUT_RIGHT] = 0; }
if ( ( padInput & PAD_INPUT_DOWN ) || keyBuff[KEY_INPUT_DOWN] ) { Key[KEY_INPUT_DOWN] ++; }
else { Key[KEY_INPUT_DOWN] = 0; }
if ( ( padInput & PAD_INPUT_A ) || keyBuff[KEY_INPUT_Z] ) { Key[KEY_INPUT_Z] ++; }
else { Key[KEY_INPUT_Z] = 0; }
};

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: DXライブラリで複数キーの同時入力について

#2

投稿記事 by ISLe » 14年前

キーボード内部の配線というハードウェアレベルの問題なので受け入れるしかありません。

Y.I

Re: DXライブラリで複数キーの同時入力について

#3

投稿記事 by Y.I » 14年前

>>2
返答ありがとうございます。
プログラムの問題でも、プログラムで解決可能な問題でもなかったんですね(^_^;)

閉鎖

“C言語何でも質問掲示板” へ戻る