2017-01-06 15 views
0

私のプログラムでxinputを使用していますので、すべてセットアップされて動作しています。私はコントローラ上のボタンが押されたことを検出できるようにしたい。私が使用する手順は、プログラムの起動時にボタンを押し続けると機能します。私はしばらくの間にifコマンドの設定を持っているので、何らかの理由で私のコントローラでAを押すと値が変わらなくても実行します。XINPUT_GAMEPAD_Aは、プログラムの起動時にボタンを押し続けないと機能しません。

基本的に、プログラムを開いているときにAを押し続けると、画面上にcoutが返されます。プログラムを開始してから少し押したいと思っても(それは私が働きたいものですが)、それを検知しません。私は、正しい順序で正しいライブラリのすべてを含めています知っている限りで

using namespace std; 
XINPUT_STATE state; 

bool A_button_pressed; 
int online; 
int test; 

int main() { 
    if (XInputGetState(0, &state) == ERROR_SUCCESS) 
    { 
     online = 1; 
     cout << "I could find a controller, it is an Xbox Controller" << endl; 
    } else { 
     online = 2; 
     cout << "Unable to find controller, searching..." << endl; 
    } 
    cout << A_button_pressed << endl; 
     cout << "Active" << endl; 
     while (online == 1) { 
      bool A_button_pressed = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_A) != 0); 
      cout << A_button_pressed << endl; 
      if (A_button_pressed = ((state.Gamepad.wButtons & XINPUT_GAMEPAD_A) != 0)) { 
       cout << "You pressed a button, congrats, game over..." << endl; 
      } 
     }; 
} 

#include "stdafx.h" 
#include <windows.h> 
#include <iostream> 
#include <Xinput.h> 
#pragma comment(lib, "Xinput.lib") 
#pragma comment(lib, "Xinput9_1_0.lib") 

答えて

0

あなたの問題は、あなただけXInputGetStateを呼び出しているということである。ここ

は私のコードですスタートアップ時に一度。プログラムが実行するフレームごとにXInputGetStateを呼び出して、状態情報を更新できるようにする必要があります。

関連する問題