C++制作一款小黑子键盘提示音程序

不好意思我漏出鸡脚了。

首先讲一下思路,这次制作的小黑子相当于键盘提示音,输入J,N,T,M,会发出“鸡你太美”的声音,连续按下JNTM则会发出“你干嘛啊,哎呦”的声音。

完整的工程和代码以及成品已经上传至百度网盘,喜欢的同学可以下载:

链接:https://pan.baidu.com/s/101qGAiRrwmY55fadY-nFww

提取码:JNTM

  1. 准备资源

首先我们要下载鸡你太美的音频并剪辑好,然后再准备一个可爱的图片当作图标。我已经准备好了一份,想要的同学可以直接用。

将准备好的资源添加到工程中。

之后不要忘记在主程序引用资源文件

#include "resource.h"
  1. 播放声音

使用PlaySound函数即可

 PlaySound((LPCTSTR)IDR_WAVE1, NULL, SND_RESOURCE | SND_SYNC);
  1. 获取键盘按键

使用GetAsyncKeyState获取键盘按键状态。为了方便使用,我使用了宏定义

#define KEY_DOWN(key_name) ((GetAsyncKeyState(key_name)& 0x8001)?1:0)
#define KEY_UP(key_name) ((GetAsyncKeyState(key_name)& 0x8001)?0:1)

然后就是获取键盘输入了

for (;;){//鸡if (KEY_DOWN('J')) {if (hasPress[0] == false){hasPress[0] = true;niganma = 1;thread t1(PlaySounds,0);t1.detach();}}if (KEY_UP('J')){hasPress[0] = false;}//你if (KEY_DOWN('N')) {if (hasPress[1] == false){hasPress[1] = true;if (niganma == 1){niganma = 2;}else{niganma = 0;}thread t1(PlaySounds, 1);t1.detach();}}if (KEY_UP('N')){hasPress[1] = false;}//太if (KEY_DOWN('T')) {if (hasPress[2] == false){hasPress[2] = true;if (niganma == 2){niganma = 3;}else{niganma = 0;}thread t1(PlaySounds, 2);t1.detach();}}if (KEY_UP('T')){hasPress[2] = false;}//美if (KEY_DOWN('M')) {if (hasPress[3] == false){hasPress[3] = true;if (niganma == 3){thread t1(PlaySounds, 4);t1.detach();niganma = 0;}else {thread t1(PlaySounds, 3);t1.detach();}}}if (KEY_UP('M')){hasPress[3] = false;}}

所以,完整的代码如下:

// XiaoHeiZi.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "resource.h"
#include <iostream>
#include<thread>
#include <conio.h>
#include<stdlib.h>
#include<windows.h>
#include<iostream>
#include <Mmsystem.h> 
#pragma comment(lib, "Winmm.lib") 
#define KEY_DOWN(key_name) ((GetAsyncKeyState(key_name)& 0x8001)?1:0)
#define KEY_UP(key_name) ((GetAsyncKeyState(key_name)& 0x8001)?0:1)
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 
using namespace std;bool ModifyRegedit(bool bAutoRun)
{char pFileName[MAX_PATH] = { 0 };DWORD dwRet = GetModuleFileNameA(NULL, (LPSTR)pFileName, MAX_PATH);std::cout << pFileName;HKEY hKey;LPCSTR lpRun = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";long lRet = RegOpenKeyExA(HKEY_LOCAL_MACHINE, lpRun, 0, KEY_WRITE, &hKey);if (lRet != ERROR_SUCCESS){std::cout << "failed";return false;}if (bAutoRun)RegSetValueA(hKey, "XiaoHeizi", (DWORD)REG_SZ, (LPCSTR)pFileName, MAX_PATH);elseRegDeleteValueA(hKey, "XiaoHeizi");RegCloseKey(hKey);return true;
}static void PlaySounds(int i)
{if (i == 0){PlaySound((LPCTSTR)IDR_WAVE1, NULL, SND_RESOURCE | SND_SYNC);}else if (i == 1){PlaySound((LPCTSTR)IDR_WAVE4, NULL, SND_RESOURCE | SND_SYNC);}else if (i == 2){PlaySound((LPCTSTR)IDR_WAVE5, NULL, SND_RESOURCE | SND_SYNC);}else if (i == 3){PlaySound((LPCTSTR)IDR_WAVE3, NULL, SND_RESOURCE | SND_SYNC);}else{PlaySound((LPCTSTR)IDR_WAVE2, NULL, SND_RESOURCE | SND_SYNC);}}
int main()
{ModifyRegedit(true);bool hasPress[4];for (int i = 0; i < 4; i++) {hasPress[i] = false;}int niganma = 0;for (;;){//鸡if (KEY_DOWN('J')) {if (hasPress[0] == false){hasPress[0] = true;niganma = 1;thread t1(PlaySounds,0);t1.detach();}}if (KEY_UP('J')){hasPress[0] = false;}//你if (KEY_DOWN('N')) {if (hasPress[1] == false){hasPress[1] = true;if (niganma == 1){niganma = 2;}else{niganma = 0;}thread t1(PlaySounds, 1);t1.detach();}}if (KEY_UP('N')){hasPress[1] = false;}//太if (KEY_DOWN('T')) {if (hasPress[2] == false){hasPress[2] = true;if (niganma == 2){niganma = 3;}else{niganma = 0;}thread t1(PlaySounds, 2);t1.detach();}}if (KEY_UP('T')){hasPress[2] = false;}//美if (KEY_DOWN('M')) {if (hasPress[3] == false){hasPress[3] = true;if (niganma == 3){thread t1(PlaySounds, 4);t1.detach();niganma = 0;}else {thread t1(PlaySounds, 3);t1.detach();}}}if (KEY_UP('M')){hasPress[3] = false;}}
}

完整的工程和成品已经上传至百度网盘,喜欢的同学可以下载:

链接:https://pan.baidu.com/s/101qGAiRrwmY55fadY-nFww

提取码:JNTM

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22264.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

只因小黑子:css动画复习

小黑子的css动画复习 css动画1. transiton 动画过渡1.1 transiton: 某属性1.2 transiton: all2. 动画过渡类型3. 动画过渡单一属性4. transform 2d属性4.1 translate 平移一、translateX(参数) 水平平移二、translateY(参数) 上下平移三、translate(a,b) 水平&#xff0c;上下平…

小黑子的HTML入土过程

小黑子的HTML入土过程 1. HTMLCSS系列教程第一章1.1 了解什么是HTML和CSS1.2 编译器VS Code1.2.1 下载方式和设置1.2.2 VS Code的快捷键基础用法 1.3 了解网页开发1.4 Web前端的三大核心技术1.5 HTML的基本结构和属性1.6 HTML的初始代码1.7 HTML的注释1.8 HTML的语义化1.9 标题…

Python画图之小黑子头像

效果演示 &#x1f438;真爱粉必备知识 倍速*2.0 实现步骤 设置窗口大小和绘画速度。用 penup() 和 goto() 来定位&#xff0c;画出领子和衣服&#xff0c;使用 fillcolor() 和 begin_fill() 开始填充颜色。用 pensize() 和 pencolor() 来调整线条的大小和颜色&#xff0c;画…

用 ChatGPT 秒建大模型,OpenAI 全新插件杀疯了,接入代码解释器一键 get

ChatGPT 可以联网后&#xff0c;OpenAI 还火速介绍了一款代码生成器&#xff0c;在这个插件的加持下&#xff0c;ChatGPT 甚至可以自己生成机器学习模型了。 上周五&#xff0c;OpenAI 刚刚宣布了惊爆的消息&#xff0c;ChatGPT 可以联网&#xff0c;接入第三方插件了&#xf…

什么是元宇宙,什么是AI,什么是chatgpt?什么是星云虚境?

随着现代科技的发展&#xff0c;元宇宙已经不再是科幻电影中的概念&#xff0c;而是逐渐变得真实起来。元宇宙是极为先进的数字世界&#xff0c;它需要人工智能、虚拟现实、区块链、云计算等多种技术的支持。在这个数字空间中&#xff0c;人们可以体验到比现实生活更丰富、更多…

元宇宙大爆炸:开发元宇宙是互联网的接替者?

美国游戏引擎公司Epic Games的创始人CEO蒂姆斯威尼&#xff08;Tim Sweeney&#xff09;宣称&#xff0c;玩家已经可以通过风靡的《堡垒之夜》聚集“元宇宙”的虚拟世界中。近期&#xff0c;美国超人气歌手Ariana Grande在全球不同地区&#xff0c;连续举办了5场演唱会&#xf…

“抢滩”元宇宙:不只Facebook和腾讯

来源 | 01区块链 责编 | Carol Facebook创始人兼首席执行官马克扎克伯格在2021年6月底表示&#xff0c;该公司的未来规划远不止是社交媒体&#xff0c;而是筑造一个元宇宙。扎克伯克宣称&#xff0c;希望在未来用5年左右的时间&#xff0c;将Facebook打造为一家元宇宙公司。 20…

元宇宙GOD新纪元打通元宇宙

J,F,4.5.9.9.9 区块链技术诞生至今已经有十余年了。在国内外不同团队的大力推动下&#xff0c;区块链项目层出不穷&#xff0c;但是对于生活的赋能作用并没有很好地体现出来。区块链技术是一项伟大的革命&#xff0c;但是一项技术如果不能投入实用&#xff0c;和各领域的应用结…

科技新浪推前浪 ChatGPT将元宇宙“拍在沙滩上”?

近期ChatGPT的热度显然已经盖过了元宇宙&#xff0c;回想去年元宇宙大热之际&#xff0c;很多企业纷纷跟进&#xff0c;甚至还有不少公司选择更名以表达All In元宇宙的决心。而如今ChatGPT抢占风头&#xff0c;成为新宠&#xff0c;元宇宙似乎被“抛弃”了&#xff0c;难道元宇…

巴比特 | 元宇宙每日必读:ChatGPT的火热与当年元宇宙的爆火故事如出一辙,科技巨头为何总是喜新厌旧?...

摘要&#xff1a;几乎所有公司都在想方设法与ChatGPT攀上关系&#xff0c;几乎人人都在关注、讨论、试用ChatGPT时&#xff0c;谁还记得Roblox、Clubhouse&#xff1f;Roblox是ChatGPT之前的全球顶流&#xff0c;带火了元宇宙&#xff1b;Clubhouse在Roblox之前也曾短暂红遍全球…

ChatGPT提示词工程(三):Summarizing概括总结

目录 一、说明二、安装环境三、概括总结&#xff08;Summarizing&#xff09;1. 简单地概括总结&#xff0c;只有字数限制2. 概括总结需要关注的某些点 四、用“提取”代替“总结”&#xff08;Try "extract" instead of "summarize"&#xff09;五、概括总…

微信小程序自定义tabbar,custom-tab-bar

背景&#xff1a; 由于需要按权限配置底部tabbar&#xff0c;所以需要用到自定义&#xff0c;微信官方文档自定义 tabBar 1. 配置信息 在 app.json 中的 tabBar 项指定 custom 字段&#xff0c;同时其余 tabBar 相关配置也补充完整 {"tabBar": {"custom": …

微信小程序开发 一 tabbar图标和颜色

前期准备 &#xff1a;注册&#xff0c;填材料&#xff0c;验证等等&#xff1a; https://mp.weixin.qq.com1.浏览一遍简易教程&#xff0c;下载相应的开发工具 写一个小例子 点击左侧的 “编辑”-》点击右侧代码里的 app.json 修改为 {"pages":["pages/fig…

as微信界面设计

一、内容 实操实现APP门户界面框架设计&#xff0c;至少包含4个tab页&#xff0c;能实现tab页之间的点击切换 二、技术 使用布局&#xff08;layouts&#xff09;和分段&#xff08;fragment&#xff09;&#xff0c;对控件进行点击监听 三、xml代码 top.xml <?xml ve…

将iconfont图标引入到vant的Tabbar标签栏里边

vant的Tabbar标签栏https://youzan.github.io/vant/#/zh-CN/tabbar 在app开发中&#xff0c;这个必不可少&#xff0c;上一张讲了怎么引入iconfont图标&#xff0c;现在就将iconfont图标引入到tabbar标签栏里边&#xff0c;看着vant提供的图标&#xff0c;必将有点丑啊23333&am…

微信小程序自定义tabBar以及图标-使用vant-weapp

小程序整合vant weapp可以看《微信小程序vant weapp安装与使用》 微信官方文档有介绍自定义tabBar 1、在小程序根目录下创建custom-tab-bar文件夹&#xff0c;并创建以下文件。&#xff08;这个是作为入口文件的&#xff09; custom-tab-bar/index.js custom-tab-bar/index.…

WeTab新标签页:浏览器主页就可以直接使用的Chat GPT

我一直觉得&#xff0c;如果能在打开浏览器的时候就能使用chatgpt&#xff0c;那可以说是再方便不过了。 刚好前段时间我发现我正在使用的WeTab新标签页刚好有了这个新功能&#xff0c;可以在新标签页上直接用gpt。 因为一些原因&#xff0c;很多人都被注册chatGPT的繁琐步骤劝…

Chat GPT使用体验,现在不会还有人没用过GPT吧?

“ChatGPT 好得吓人&#xff0c;我们离强大到危险的人工智能不远了”。 这是我们最近听到不少的一些声音&#xff0c;甚至有许多美丽国的大佬&#xff0c;联名要求停止gpt5的开发。 然而&#xff0c;尽管 ChatGPT 确实是一种相当出色的模型&#xff0c;但它也有其限制和局限性…

用后即弃的人造人

即使各种鼓励政策不断被使出&#xff0c;很多发达国家的女性&#xff0c;也不大愿意生孩子了。少子化是现代化、工业化的附赠品&#xff0c;这一点无可回避。 所以很多人都很期待用科技来造人。埃隆马斯克&#xff08;Elon Musk&#xff09;等人提出的“人造子宫”方案&#xf…

Android程序员惨遭社会毒打,如何快准狠的应对下次危机?

一、程序员现状 今年年初&#xff0c;我同行朋友的小公司辞退了10多个程序员。 近3个月过去了&#xff0c;大概一半的人找不到合适工作。大家聊起时正在感慨这两年好多行业都不景气&#xff0c;朋友说&#xff0c;他的前同事们不少非科班出身&#xff0c;半路参加培训机构后就…