发出蜂鸣声直到有任何输入

2023-12-28

我正在制作一个测验程序。所以我想要的是,每当用户提出任何问题时,他都有 30 秒的时间来回答。在这 30 秒内,我希望每隔 1 秒发出一次嘟嘟声('\a')。现在我想要的是,一旦用户输入任何输入,这种蜂鸣声就应该停止。我创建了这个小函数来产生 30 秒的蜂鸣声void beep(){ for(int i=0;i<30;i++){cout<<"\a"; Sleep(1000); } }但我不知道如何在用户输入他/她的答案后立即停止它,因为一旦我调用它,在结束之前什么也做不了。 谁能给出任何解决方法吗?


免责声明:我不是 Windows 程序员,我不知道这是否是好的风格,或者是否可以编译或工作。我这里无法测试。然而,由于没有其他人给出解决方案,因此这是一个起点。当我了解更多信息时,我将编辑这个答案,并希望对此有更多了解的人会出现。

Edit: 我是假装的_kbhit()到一个简单的函数返回false,它至少可以编译并且看起来运行正常

Edit:好吧,我工作中确实有 MS Visual Studio,但我只是从不使用它。现在的代码可以编译并运行(但我怀疑时间已经关闭)。

Edit:更新为立即读回按下的键(而不是等待用户按下 Enter 键)。

这是重要的功能:http://msdn.microsoft.com/en-us/library/58w7c94c%28v=vs.80%29.aspx http://msdn.microsoft.com/en-us/library/58w7c94c%28v=vs.80%29.aspx

#include <windows.h>
#include <conio.h>
#include <ctime>
#include <iostream>
#include <string>

int main()
{
    time_t startTime, lastBeep, curTime;
    time(&startTime);
    lastBeep = curTime = startTime;
    char input = '\0';

    while ( difftime(curTime,startTime) < 30.0 )
    {
        if ( _kbhit() ) // If there is input, get it and stop.
        {
            input = _getch();
            break;
        }
        time(&curTime);
        if ( difftime(curTime,lastBeep) > 1.0 ) // More than a second since last beep?
        {
            std::cout << "\a" << "second\n" << std::flush;
            lastBeep = curTime; // Set last beep to now.
        }
    }
    if ( input )
    {
        std::cout << "You hit: \"" << input << "\"\n" << std::flush;
    }

    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

发出蜂鸣声直到有任何输入 的相关文章

随机推荐

  • 如何删除通过类添加的操作

    我试图删除插件在单独的functions php 文件中注册的操作 但语法难倒了我 该插件 我无法复制 粘贴 商业插件 推断 add action 如下 class Plugin Class function add actions add
  • 如何在 Gemfile 中指定最低 Ruby 版本?

    我知道我可以在 Gemfile 中指定 Ruby 版本 如下所示 ruby 2 0 0 但是 我不想设置确切的 Ruby 版本 而是希望能够指定最低 Ruby 版本 以便我的脚本与新版本的 Ruby 保持兼容 您可以改为引发异常 raise
  • 为什么我的 sinon 存根表现得像是在调用真实函数?

    我正在尝试遵循这个例子 https www alexjamesbrown com blog development stubbing middleware testing express supertest https www alexja
  • 如何在 TypeScript 中使用 lodash.mixin

    我的团队正在评估将一些文件从 JavaScript 切换到 TypeScript 并且我们在代码中广泛使用了一些自定义 mixin 方法 从一些基本测试来看 虽然我们可以使用 mixin 按照规范创建 mixin 但我们无法在不出现编译错误
  • 如何修复 GIT 错误:HEAD:无效的引用日志条目 xxxxxxxxxxxxxxxx

    我之前遇到过错误 GIT错误 目标文件为空 然后我使用了中提到的方法如何修复 GIT 错误 目标文件为空 https stackoverflow com questions 11706215 how to fix git error obj
  • 以循环模式使用 tomcat

    我想在配置中运行我的 tomcat 实例 其中通过循环将请求提供给多个 tomcat 实例 我不想使用任何内部集群管理器 据我所知 如果每个请求都由不同的tomcat提供服务 则未知的sessionId将到达tomcat 因此它将被迫创建一
  • GKE:修改现有集群 - 删除节点标签并更改网络

    我使用以下 CLI 命令创建了 Kubernetes 集群 gcloud container clusters create some cluster tags some tag network some network 我现在想 禁用 t
  • R:使用 cat() 获得类似 Unix 的换行符 LF 写入文件

    我尝试将字符向量写入 Windows 7 R 3 2 2 x64 下的文本文件 并且我想要 unix LF 到 Windows CRLF v lt c a b c cat nl file textfile txt sep n writes
  • DestinationViewController Segue 和 UINavigationController swift

    所以我有一个像这样的prepareForSegue方法 override func prepareForSegue segue UIStoryboardSegue sender AnyObject if segue identifier f
  • 使用 TripleDes、PKCS7 和 ECB 进行 PHP 加密/解密

    我的加密函数工作正常 但是我不知道如何让解密函数给出正确的输出 这是我的加密函数 function Encrypt data secret Generate a key from a hash key md5 utf8 encode sec
  • Zipalign - 未找到命令 - MAC 终端

    当我尝试在 apk 上运行 Zipalign 时 出现错误 Command not found 我不太熟悉在 MAC 上使用终端命令 但我已导航到 SDK Tools 文件夹并运行以下命令 zipalign v 4 Project1 apk
  • 将 Swift 与 Qt 结合使用

    我们可以很容易地使用Qt 中的 Objective C 和 C https stackoverflow com questions 23404158 qt run object c code 23404257 23404257 观看了 Ap
  • jQuery:动画后 div 弹回完整尺寸

    在下面的 jQuery 示例中 我将一个 div 放在另一个 div 中 当我将内部 div 的宽度设置为 0 时 外部 div 具有绝对定位 的宽度也会随之减小 这是所希望的 问题是 动画完成后 外部 div 会弹回到原来的大小 这是预期
  • Adobe AIR - 带图像的自定义预加载器

    Folks 我设计了一个Adobe AIR应用 我想展示一些preloader在它打开之前 任何人都可以指导我的教程preloader 专门针对 AIR或者任何已经内置的 Thanks 借助 AIR 我可以想出几种方法来实现这一目标 1 使
  • 无法解决此引用错误

    我一直在编写一个程序 在程序中我必须压缩一些文件 所以我使用了一个名为 Ionic Zip 的插件 当我运行我的程序时 它完全正常 没有错误 但是现在当我在完成编写后尝试构建我的程序时 出现以下错误 Code Warning 1 Could
  • Wcf服务继承(扩展服务)

    我正在开发的程序使用 wcf 公开回调和服务 基本上 服务所做的只是返回一些变量值 至于回调 他们只是更新这些变量 我希望能够公开一个仅包含服务的类以及一个包含服务和回调的类 例如 ServiceContract ServiceBehavi
  • 在带有环回后端的 Angular 应用程序中通过 facebook 登录

    我正在使用 Strongloop 环回后端制作一个有角度的应用程序 我还使用环回护照模块通过 facebook 集成了第三方登录 Loopback example passport 中的一切都很好 并且在重定向到我的应用程序之前 我的应用程
  • 如何获取 PowerShell 脚本的文件系统位置?

    我有一个 PowerShell 脚本位于D temp 当我运行此脚本时 我希望列出文件的当前位置 我该怎么做呢 例如 此代码将在 DOS 批处理文件中完成它 我正在尝试将其转换为 PowerShell 脚本 FOR f usebackq t
  • 匹配 SHA1 的正则表达式

    我正在尝试将通用文本中的 SHA1 与正则表达式进行匹配 理想情况下 我想避免匹配单词 可以肯定地说 完整的 SHA1 具有独特的模式 它们很长且长度一致 因此我可以可靠地匹配它们 但缩写的 SHA1 又如何呢 我可以依赖数字的存在吗 查看
  • 发出蜂鸣声直到有任何输入

    我正在制作一个测验程序 所以我想要的是 每当用户提出任何问题时 他都有 30 秒的时间来回答 在这 30 秒内 我希望每隔 1 秒发出一次嘟嘟声 a 现在我想要的是 一旦用户输入任何输入 这种蜂鸣声就应该停止 我创建了这个小函数来产生 30