C++游戏手柄编程 |
您所在的位置:网站首页 › xbox手柄的按键名称 › C++游戏手柄编程 |
我用的是北通宙斯游戏手柄-白金 放几篇非常不错的文章 1.JoyStick游戏杆编程实践_32768的博客-CSDN博客_joystick 2.游戏手柄(JoyStick)编程学习笔记(1)_liyuanbhu的博客-CSDN博客 #include #include #include #include //添加joystick操作api的支持库 #include #pragma comment(lib, "Winmm.lib") int main(int argc, char* argv[]) { JOYINFO joyinfo;//定义joystick信息结构体 JOYINFOEX joyinfoex; joyinfoex.dwSize = sizeof(JOYINFOEX); joyinfoex.dwFlags = JOY_RETURNALL; while(1) { //读取手柄信息 UINT joyNums; joyNums = joyGetNumDevs(); // printf("当前手柄数量:%d \n",joyNums); if (joyNums>=1) { MMRESULT joyreturn = joyGetPosEx(JOYSTICKID1, &joyinfoex); if(joyreturn == JOYERR_NOERROR) { printf("0x%09d ", joyinfoex.dwXpos); printf("0x%09d ", joyinfoex.dwYpos); //printf("0x%09X ", joyinfoex.dwZpos); //printf("0x%09X ", joyinfoex.dwPOV); //printf("0x%09X ", joyinfoex.dwButtons); printf("\n"); }else { switch(joyreturn) { case JOYERR_PARMS : printf("bad parameters\n"); break; case JOYERR_NOCANDO : printf("request not completed\n"); break; case JOYERR_UNPLUGGED : printf("joystick is unplugged\n"); break; default: printf("未知错误\n"); break; } } } if(kbhit()) break; Sleep(300); } return 0; }第一步:需要包含外部库,我用的QT开发,需要在.pro文件中添加 LIBS += -lWinmm包含以下的头文件 #include #include #include第二步:查询游戏手柄按键信息 1.方向键(前、后、左、右) 方向键 按键访问方式键值前joyinfoex.dwPOVJOY_POVFORWARD后joyinfoex.dwPOVJOY_POVBACKWARD左joyinfoex.dwPOVJOY_POVLEFT右joyinfoex.dwPOVJOY_POVRIGHT默认状态joyinfoex.dwPOVJOY_POVCENTERED默认没有按键的时候发送 JOY_POVCENTERED 信号 //方向键 if (joyinfoex.dwPOV == JOY_POVFORWARD)//前 { printf("前"); } if (joyinfoex.dwPOV == JOY_POVCENTERED)//默认没有按键时发送此信号 { printf("宫保鸡丁"); } if (joyinfoex.dwPOV == JOY_POVRIGHT)//右 { printf("右"); } if (joyinfoex.dwPOV == JOY_POVBACKWARD )//后 { printf("后"); } if (joyinfoex.dwPOV == JOY_POVLEFT)//左 { printf("左"); }2.获取32个按键按下,可以进行组合。 按键访问方式键值32个组合按键joyinfoex.dwButtons通过函数测3.获取摇杆、LT\RT信息 (1)、左摇杆,通过xy的坐标来读取,原点是32767 (2)、右摇杆通过ur的坐标来读取,原点是32767 joyinfoex.dwZpos 没有按键按下: RT按下: LT按下: 32767 32767 - 128 32767 - 65408 if (joyinfoex.dwXpos32767) { printf("宫保鸡丁"); } printf("%d", joyinfoex.dwXpos); printf("%d", joyinfoex.dwYpos); printf("%d", joyinfoex.dwZpos); if (joyinfoex.dwZpos == 128) { printf("宫保鸡丁"); } printf("%d", joyinfoex.dwUpos); printf("%d", joyinfoex.dwRpos);这样就可以读取手柄上的按键信息,进行判断。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |