だから私は自分のプログラムで xinput を使用しています。すべてセットアップされて動作しているので、xbox one コントローラーを検出できます。コントローラーのボタンが押されたことを検出できるようにしたい。プログラムの起動時にボタンを押したままにすると、私が使用する手順が機能します。しばらくの間 if コマンドをセットアップしているので、コントローラーで 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")