【问题标题】:Getting input from console without cin?从没有cin的控制台获取输入?
【发布时间】:2011-06-12 20:51:59
【问题描述】:

我正在尝试制作一个基本上是控制台乒乓球的小控制台程序。所以现在我有这个:

int main()
{
    while(1)
    {
        clearScreen();
        restThread(100);
    }
    return 0;
}

我需要轮询的唯一输入是用户在屏幕被清除后是否按下了 A 或 D 键。我还需要知道密钥何时释放。我也在尝试做这个跨平台。

所以我真正需要的只是一个 if(keyWasDown('a')) {} 之类的函数。

谢谢

【问题讨论】:

  • 没有标准方法。您得到的任何答案都将是特定于平台的。

标签: c++ c console


【解决方案1】:

也许你想要kbhit(非阻塞)或getch(阻塞),两者都来自<conio.h>。还有getchar,来自<stdio.h><cstdio>

如果您希望程序等待键盘按下,getchgetchar 自己就可以了。

如果您希望程序等待键盘按下,kbhitgetchgetchar 结合使用就足够了。

但是,正如 GMan 所说,这些方法并不是真正的跨平台(如果您从不打算在不同的平台上尝试这个,那真的没有实际意义)。对于主机游戏,您可能有兴趣查看ncurses

【讨论】:

  • 至少是 Windows。我知道它在我的 Linux 机器上不起作用。
【解决方案2】:
#include <stdio.h> #include <conio.h> int main() { while(1) { clearScreen(); if(kbhit()) { int const ch = getch(); switch(ch) { case 0x61: printf("A was pressed!\n"); break; case 0x64: printf("D was pressed!\n"); break; } } restThread(100); } return 0; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2015-02-28
    相关资源
    最近更新 更多