用c++按Xbox按钮
Xbox button pressed in C++
我试图在Visual Studio中用c++编写程序,以测试XBOX控制器的一些功能。我正在使用输入输入,因此如果控制器连接到我的计算机,我可以注册,但是,我可以弄清楚如何判断是否按下了按钮。到目前为止,我把它作为复选按钮函数
if (state.Gamepad.wButtons == XINPUT_GAMEPAD_A) {
cout << "An";
}
现在我只希望它打印出'A',但它不工作,还有什么我需要添加的?
如果您熟悉创建和使用对象类,并且基于我必须完成的Uni作业,则此信息很有帮助。
首先,你可能想要通过创建一个类来为你连接的每个单独的控制器存储数据。
class xboxController {
private:
public:
};
现在你有地方开始,但仍然将无法添加多个控制器?如果你想在一个控制器上做一些事,在另一个控制器上做另一些事呢?您可以创建一个重载的构造函数,您可以手动为控制器分配索引。(提示:您将需要一些东西来存储它以供以后使用)(提示2:index's start at 0)。
class xboxController {
private:
public:
//Default constructor
xboxController();
//overloaded constructor
xboxController(int i){...};
};
然后你需要一个函数,你可以用它来检查特定的控制器,哪个按钮被按下了。在前面的类赋值中,我使用了bool类型,如下所示:
//NOTE, this takes in a parameter defined by you and checks it.
bool checkButtonPress(WORD button){...};
但是你还需要一个成员在你的类中,你可以存储控制器的状态(Xbox控制器使用结构XINPUT_STATE)。
XINPUT_STATE controllerState
现在您有了存储状态的地方,您可以完成bool:
bool checkButtonPress(WORD press){
return (controllerState.Gamepad.wButtons & press) != 0;
}
XInput提供了一个能够接收有关控制器状态信息的函数。为了简单起见,您应该创建一个函数,以便在需要更新/获取控制器状态时调用该函数。
void getState(){
//Understand what these lines are doing, and how to use them for your own needs.
ZeroMemory(&controllerState, sizeof(XINPUT_STATE));
XInputGetState(controllerNumber,&controllerState);
}
因此,在main中,您将能够将控制器分配给索引,以便通过使用重载构造函数和检索控制器的状态来轻松管理该控制器)。然后,您将能够为每个控制器使用对象,并能够向每个控制器发送命令。通过使用bool,您将能够检查哪个按钮被按下,并能够告诉控制器或计算机如何处理该输入。
下面是如何使用该代码的一小段代码://This program will keep checking and print a message when
//A is pressed on the controller and will terminate when you press B
int main() {
xboxController xbox(1);
bool isFinished = false;
while (isFinished == false) {
xbox.getState();
if(xbox.checkButtonPress(XINPUT_GAMEPAD_A)){
cout << "Button A was pressed" endl;
}
else if(xbox.checkButtonPress(XINPUT_GAMEPAD_B)){
cout << "Program will now terminate" << endl;
isFinished = true;
}
}
return 0;
}
此外,如果这是MTRN2500,请注意,我已经演示并提交了我的代码,这只是为了帮助,而不是复制。谢谢!
- 问:如何使用C++中的按钮从窗口打开窗口
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- QML按钮点击功能执行顺序
- 当用户超过按钮点击限制时报告
- 函数计算用户按下按钮的频率
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- FLTK:按下哪个按钮 - 将数字传递给按钮的回调 (lambda)
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- Qt自定义QPush按钮未显示在布局上
- SDL 操纵杆按钮按下/C++
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- Qt中来自不同功能的按钮引用
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- ImGui 在单击按钮后冻结
- WinAPI 无法创建按钮
- 按钮悬停在 QT 中垂直布局的选项卡小部件中不起作用
- 如何使用connect将qml按钮与同一类的cpp函数连接起来
- 按钮按下打开 OLED ESP32
- 用c++按Xbox按钮