检查并比较是否在C++控制台应用程序中按下了"down arrow"键?

Check and compare if the "down arrow" key is pressed in a C++ console application?

本文关键字:down arrow 是否 比较 C++ 应用程序 控制台 检查      更新时间:2023-10-16

我有一个很好的菜单系统,我想移动一个箭头来防御选择。我正在测试这个,所以我只有一个向下键的情况构建,但最终我会有向下和向上箭头。

我让它工作,因为我在按下向下键后发现,选择是 224。我遇到了一个新问题,向上箭头键也是 224...

char    selector[4] = {'>',' ',' ',' '};
while (1)
{
    DisplayMenu();
    printf("        Main Menu:               n");
    printf("        %c Log in                   n", selector[0]);
    printf("        %c Display High Scores      n", selector[1]);
    printf("        %c Start Game               n", selector[2]);
    printf("        %c Exit                     n", selector[3]);
    choice = getch();
    switch (choice)
    {
    case 224:
        for (int i = 0; i < 4; i++)
        {
            if (selector[i] == '>')
            {
                selector[i] = ' ';
                i++;
                selector[i] = '>';
            }
        }
        break;
    }
    system("cls");
}
return numberChoice;

我的理论是,当按下向下键时,将 char 数组中的">"移到上面,然后当显示菜单时,它会显示">"或空格,给人一种你在菜单选项中移动的错觉。当然,我似乎找不到一种方法来检测向下箭头是什么。有什么帮助吗?

这取决于平台。

我建议您查看OpenGL库glfw的源代码,它实现了抽象来处理键盘事件。

在 GitHub 上进行的搜索将向您展示他们如何为各种平台实现GLFW_KEY_DOWN