我有一个家庭作业要创建一个游戏。所以我创建了一个游戏,它生成随机数,显示它们,然后几秒钟后数字消失,用户必须按降序输入它们。游戏运行良好,所有输出都是正确的......但问题是我创建了不同的函数来创建数字、排列它们、接受......并且每次调用函数时我都必须按几次回车键。
有没有一种方法可以在不按任何键的情况下调用这些函数以使程序在不按回车键的情况下运行?
从标准输入中提取字符而不等待按下回车键
这在纯 C++ 中是不可移植的,因为它过多地依赖于可能与标准输入连接的终端(它们通常是行缓冲的)。但是,您可以为此使用库:
- conio 可用于 Windows 编译器。使用函数 _getch() 给你一个字符,而无需等待回车键。我不是经常使用 Windows 开发人员,但我见过我的同学只包含 conio.h 并使用它。参见维基百科的 conio.h。它列出了在 Visual C++ 中被声明为弃用的 getch。
- curses 可用于 linux,兼容的 curses 实现也可用于 Windows。它还有一个 getch 功能。(尝试使用 man getch 查看它的联机帮助页)。参见维基百科上的诅咒。
如果您的目标是跨平台兼容性,我建议您使用 curses。也就是说,我确信您可以使用某些功能来关闭线路缓冲(我相信这称为“原始模式”,而不是“熟模式”(查看 man stty))。如果我没记错的话,Curses 会以便携的方式为你处理。