0

我知道一个特定的键,例如a可以检查为

if (GetKey(olc::A).bPressed){
            //do stuff
        }

但是我如何检查是否按下了任何键。

例子

if (any key is pressed){
            //if i pressed a, it should output a.
            std::cout << the key which was pressed was a; 
        }

我正在寻找一种像素游戏引擎特定的方法来做到这一点,但我在互联网上找不到任何东西。

4

1 回答 1

0

事实证明引擎没有提供这样做的方法,但是一些很棒的人向我提供了一种解决方法。它设置使您拥有键字符映射并将它们存储在具有适当值的向量中。然后遍历该向量以查看是否按下了这些键中的任何一个。

struct KeyCharMap 
{
    olc::Key key;
    char lower;
    char upper;
};

std::vector<KeyCharMap> valueInputKeys = 
{
                {olc::A, 'a', 'A'},
                {olc::B, 'b', 'B'},
                {olc::C, 'c', 'C'},
                {olc::D, 'd', 'D'},
                {olc::E, 'e', 'E'},
                {olc::F, 'f', 'F'},
                {olc::G, 'g', 'G'},
                {olc::H, 'h', 'H'},
                {olc::I, 'i', 'I'},
                {olc::J, 'j', 'J'},
                {olc::K, 'k', 'K'},
                {olc::L, 'l', 'L'},
                {olc::M, 'm', 'M'},
                {olc::N, 'n', 'N'},
                {olc::O, 'o', 'O'},
                {olc::P, 'p', 'P'},
                {olc::Q, 'q', 'Q'},
                {olc::R, 'r', 'R'},
                {olc::S, 's', 'S'},
                {olc::T, 't', 'T'},
                {olc::U, 'u', 'U'},
                {olc::V, 'v', 'V'},
                {olc::W, 'w', 'W'},
                {olc::X, 'x', 'X'},
                {olc::Y, 'y', 'Y'},
                {olc::Z, 'z', 'Z'},
                {olc::K0, '0', ')'},
                {olc::K1, '1', '!'},
                {olc::K2, '2', '@'},
                {olc::K3, '3', '#'},
                {olc::K4, '4', '$'},
                {olc::K5, '5', '%'},
                {olc::K6, '6', '^'},
                {olc::K7, '7', '&'},
                {olc::K8, '8', '*'},
                {olc::K9, '9', '('},
                {olc::NP0, '0', '0'},
                {olc::NP1, '1', '1'},
                {olc::NP2, '2', '2'},
                {olc::NP3, '3', '3'},
                {olc::NP4, '4', '4'},
                {olc::NP5, '5', '5'},
                {olc::NP6, '6', '6'},
                {olc::NP7, '7', '7'},
                {olc::NP8, '8', '8'},
                {olc::NP9, '9', '9'},
                {olc::NP_MUL, '*', '*'},
                {olc::NP_DIV, '/', '/'},
                {olc::NP_ADD, '+', '+'},
                {olc::NP_SUB, '-', '-'},
                {olc::NP_DECIMAL, '.', '.'},
                {olc::PERIOD, '.', '>'},
                {olc::SPACE, ' ', ' '},
                {olc::OEM_1, ';', ':'},
                {olc::OEM_2, '/', '?'},
                {olc::OEM_3, '`', '~'},
                {olc::OEM_4, '[', '{'},
                {olc::OEM_5, '\\', '|'},
                {olc::OEM_6, ']', '}'},
                {olc::OEM_7, '\'', '"'},
                {olc::OEM_8, '-', '-'},
                {olc::EQUALS, '=', '+'},
                {olc::COMMA, ',', '<'},
                {olc::MINUS, '-', '_'}
};

   for (auto& m : valueInputKeys)
        if (GetKey(m.key).bPressed)
             std::cout << m.lower;

                    
于 2021-02-09T20:29:33.670 回答