C ++ SFML - 如何同时读取SFML中的两个键?

时间:2016-08-10 17:40:58

标签: c++ keyboard sfml

我制作了一个非常简单的双人游戏,其中一个人是水母,另一个是SFML中的鲨鱼。唯一的问题是只有一个精灵可以一次移动。这有可能解决吗?我该如何解决?

编辑:我的尝试是这样的:

if (event.type == sf::Event::KeyPressed)
            {
                bool D;
                bool A;
                bool S;
                bool W;
                bool Up;
                bool Right;
                bool Left;
                bool Down;
                if (event.key.code == sf::Keyboard::A)
                    A = true;



                if (event.key.code == sf::Keyboard::D)
                     D = true;

                if (event.key.code == sf::Keyboard::W)
                     W = true;

                if (event.key.code == sf::Keyboard::S)
                     S = true;

                if (event.key.code == sf::Keyboard::Left)
                     Left = true;

                if (event.key.code == sf::Keyboard::Right)
                     Right = true;

                if (event.key.code == sf::Keyboard::Up)
                     Up = true;

                if (event.key.code == sf::Keyboard::Down)
                     Down = true;

                if (D and Right)
                {
                    jelly.move(10, 0)
                }
                  ...



            }

2 个答案:

答案 0 :(得分:2)

您可以通过在按下一个键时设置一个标志来解决它,并在释放该键时清除它。然后,当按下另一个键时,您可以检查此标志。

答案 1 :(得分:1)

或者,您可以使用sf::Keyboard::isKeyPressed来探测给定点的键盘状态。

当前代码的一个问题是所有变量都是if语句的本地变量,因此在处理下一个事件时会重新初始化。它们应该在if之外定义。另一个问题是您没有处理KeyReleased事件。