如何在 C++ 中为键盘输入制作开关盒?

How to make a switch case for keyboard input in C++?

提问人:user780370 提问时间:4/10/2023 最后编辑:πάντα ῥεῖuser780370 更新时间:4/10/2023 访问量:191

问:

我在 C++ 中玩,目前有这个“如果”地狱:

        if(GetKeyState(VK_UP) & 0x8000)
            {
                camRotX = camRotX-8;
            }
        if(GetKeyState(VK_DOWN) & 0x8000)
            {
                camRotX = camRotX+8;
            }
        if(GetKeyState('W') & 0x8000)
            {
                camZ = camZ+2;
            }
        if(GetKeyState('S') & 0x8000)
            {
                camZ = camZ-2;
            }
        if(GetKeyState('A') & 0x8000)
            {
                camX = camX-2;
            }
        if(GetKeyState('D') & 0x8000)
            {
                camX = camX+2;
            }

我如何让它使用开关盒?

我尝试为我的游戏进行键盘输入。好吧,一切正常,但看起来很丑。

C++ WinAPI 输入 键盘

评论

2赞 wohlstad 4/10/2023
由于多个选项可以同时有效,因此我认为开关盒不适合此。
0赞 Jonathan Potter 4/10/2023
该函数只允许您一次测试一个键,因此实际上没有任何方法可以绕过多个 if 语句。我想你可以用一个循环来做到这一点,该循环使用一个键数组进行测试,并在按下每个键时调用一个 lambda。
0赞 Red.Wave 4/10/2023
@JonathanPotter如果所有修改的变量都属于同一类型,则可以使用不太通用的解决方案。该数组将存储 <key, reference, step> 元组。
0赞 IInspectable 4/10/2023
您不需要选择答案。如果所有捐款的票数都低于零,这是一个很好的迹象,表明两者都不能被接受。
0赞 Remy Lebeau 4/10/2023
由于您一次查询多个密钥,因此请考虑改用,然后您可以根据需要检查相关的数组插槽GetKeyboardState()

答: 暂无答案