如何用 C++ 复现《千本樱》
首先,我们要知道如何让一个 C++ 程序发音。
Windows 库里面有个函数叫做 Beep,用法 Beep(int a, int b)。其中 a 是这个声音的id,b 是这个声音持续多长时间,单位是毫秒。
下面给出声音 list:
#define D1 262
#define D2 294
#define D3 330
#define D4 349
#define D5 392
#define D6 440
#define D7 494
#define M1 523
#define M2 578
#define M3 659
#define M4 698
#define M5 784
#define M6 880
#define M7 988
#define G1 1046
#define G2 1175
#define G3 1318
#define G4 1480
#define G5 1568
#define G6 1760
#define G7 1976
其中 D 开头的是低八度,G 开头的是高八度。后面的数字就是简谱中的数字。(本人是学小提琴的,不识简谱,所以可能说的有点问题,欢迎指出)。
再在网上搜到《千本樱》的简谱,于是,我们就可以写出来了!!!
#include <cstdio>
#include <iostream>
#include <windows.h>
using namespace std;
const int pai = 250;
const int ban = pai/2;
#define D1 262
#define D2 294
#define D3 330
#define D4 349
#define D5 392
#define D6 440
#define D7 494
#define M1 523
#define M2 578
#define M3 659
#define M4 698
#define M5 784
#define M6 880
#define M7 988
#define G1 1046
#define G2 1175
#define G3 1318
#define G4 1480
#define G5 1568
#define G6 1760
#define G7 1976
void BAN(int sound) {
Beep(sound, ban);
Sleep(ban);
}
void PAI(int sound) {
Beep(sound, pai);
Sleep(pai);
}
void SI(int sound) {
Beep(sound, ban/2);
Sleep(ban/2);
}
#define WAIT Sleep
#define PAIU pai
#define BANU ban
int main() {
BAN(M6);
PAI(M6);
BAN(M5);
BAN(M6);
PAI(M6);
BAN(M5);
BAN(M6);
PAI(M6);
BAN(M5);
BAN(M6);
PAI(G1);
BAN(M6);
PAI(M6);
BAN(M5);
BAN(M6);
PAI(M6);
BAN(M5);
PAI(M6);
PAI(G1);
PAI(G2);
PAI(G3);
BAN(M2);
BAN(M3);
SI(D6);
SI(D5);
SI(D6);
SI(D5);
BAN(M2);
BAN(M3);
SI(D6);
SI(D5);
SI(D6);
SI(D5);
BAN(M2);
BAN(M3);
SI(D6);
SI(D5);
SI(D6);
SI(D5);
BAN(M1);
BAN(D7);
BAN(D6);
BAN(D5);
BAN(M2);
BAN(M3);
SI(D6);
SI(D5);
SI(D6);
SI(D5);
BAN(M2);
BAN(M3);
SI(D6);
SI(D5);
SI(D6);
SI(D5);
BAN(M2);
BAN(M3);
BAN(M5);
BAN(G1);
SI(M7);
SI(G1);
SI(M7);
SI(M6);
BAN(M5);
BAN(M3);
BAN(M2);
BAN(M3);
SI(D6);
SI(D5);
SI(D6);
SI(D5);
BAN(M2);
BAN(M3);
SI(D6);
SI(D5);
SI(D6);
SI(D5);
BAN(M2);
BAN(M3);
SI(D6);
SI(D5);
SI(D6);
SI(D5);
BAN(M1);
BAN(D7);
BAN(D6);
BAN(D5);
BAN(M1);
SI(D6);
SI(M1);
BAN(M2);
SI(M1);
SI(M2);
BAN(M3);
SI(M2);
SI(M3);
SI(M5);
SI(G1);
SI(M3);
SI(M5);
BAN(G1);
BAN(M7);
BAN(M6);
BAN(M5);
PAI(M6);
BAN(M6);
BAN(G1);
for(int i = 0;i < 2;i++)
{
BAN(G2);
BAN(G3);
SI(M6);
SI(M5);
SI(M6);
SI(M5);
BAN(G2);
BAN(G3);
SI(M6);
SI(M5);
SI(M6);
SI(M5);
BAN(G2);
BAN(G3);
SI(M6);
SI(M5);
SI(M6);
SI(M5);
BAN(G1);
BAN(M7);
BAN(M6);
BAN(M5);
BAN(G2);
BAN(G3);
SI(M6);
SI(M5);
SI(M6);
SI(M5);
BAN(G2);
BAN(G3);
SI(M6);
SI(M5);
SI(M6);
SI(M5);
BAN(G2);
BAN(G3);
BAN(G5);
BAN(G1*2);
SI(G7);
SI(G1*2);
SI(G7);
SI(G6);
BAN(G5);
BAN(G3);
BAN(G2);
BAN(G3);
SI(M6);
SI(M5);
SI(M6);
SI(M5);
BAN(G2);
BAN(G3);
SI(M6);
SI(M5);
SI(M6);
SI(M5);
BAN(G2);
BAN(G3);
SI(M6);
SI(M5);
SI(M6);
SI(M5);
BAN(G1);
BAN(M7);
BAN(M6);
BAN(M5);
SI(G3);
SI(G2);
SI(G3);
SI(G5);
SI(G6);
SI(G5);
SI(G3);
SI(G2);
BAN(M6);
BAN(G1);
BAN(G3);
BAN(G5);
BAN(G6);
PAI(G6);
BAN(G5);
PAI(G6);
WAIT(PAIU);
PAI(M6);
BAN(M6);
SI(M5);
BAN(M6);
BAN(G1);
BAN(G2);
BAN(G3);
PAI(M6);
BAN(M6);
SI(M5);
BAN(M6);
BAN(M5);
BAN(M3);
BAN(M5);
PAI(M6);
BAN(M6);
SI(M5);
BAN(M6);
BAN(G1);
BAN(G2);
BAN(G3);
PAI(G3);
PAI(G2);
PAI(G1);
PAI(M6);
PAI(M6);
BAN(M6);
SI(M5);
BAN(M6);
BAN(G1);
BAN(G2);
BAN(G3);
PAI(M6);
BAN(M6);
SI(M5);
BAN(M6);
BAN(M5);
BAN(M5);
BAN(M3);
PAI(M6);
BAN(M6);
SI(M5);
BAN(M5);
BAN(M6);
BAN(G1);
BAN(G2);
PAI(G3);
PAI(G2);
PAI(G1);
PAI(M6);
PAI(G1);
PAI(M7);
PAI(M6);
PAI(M5);
BAN(M5);
SI(M5);
SI(M6);
BAN(M3);
BAN(M2);
PAI(M3);
WAIT(PAIU);
BAN(M3);
BAN(M5);
PAI(M6);
PAI(G2);
PAI(M7);
PAI(G1);
BAN(M7);
BAN(M5);
PAI(M6);
WAIT(PAIU);
PAI(G1);
PAI(M7);
PAI(M6);
PAI(M5);
BAN(M5);
SI(M5);
SI(M6);
BAN(M3);
BAN(M2);
PAI(M3);
BAN(M3);
BAN(M5);
BAN(M6);
PAI(M6);
BAN(M6);
PAI(G1);
PAI(G2);
PAI(M7);
WAIT(PAIU*2);
BAN(M6);
BAN(G1);
BAN(G2);
PAI(G2);
BAN(G3);
PAI(G3);
BAN(G3);
BAN(G5);
BAN(G6);
BAN(G2);
BAN(G1);
PAI(G3);
BAN(M6);
BAN(G1);
BAN(G2);
PAI(G2);
BAN(G3);
PAI(G3);
BAN(G3);
BAN(G3);
BAN(M4);
BAN(M3);
BAN(M2);
BAN(M1);
PAI(M1);
BAN(M6);
BAN(G1);
BAN(G2);
PAI(G2);
BAN(G3);
PAI(G3);
BAN(G3);
BAN(G5);
BAN(G6);
BAN(G2);
BAN(G1);
PAI(G3);
BAN(M6);
BAN(G1);
PAI(M4);
PAI(M3);
PAI(M2);
PAI(M1);
BAN(G1);
BAN(G2);
BAN(M7);
BAN(M5);
PAI(M6);
BAN(M6);
BAN(G1);
BAN(G2);
PAI(G2);
BAN(G3);
PAI(G3);
BAN(G3);
BAN(G5);
BAN(G6);
BAN(G2);
BAN(G1);
PAI(G3);
BAN(M6);
BAN(G1);
BAN(G2);
PAI(G2);
BAN(G3);
PAI(G3);
BAN(G3);
BAN(G3);
BAN(M4);
BAN(M3);
BAN(M2);
BAN(M1);
PAI(M1);
BAN(M6);
BAN(G1);
BAN(G2);
PAI(G2);
BAN(G3);
PAI(G3);
BAN(G3);
BAN(G5);
BAN(G6);
BAN(G2);
BAN(G1);
PAI(G3);
BAN(M6);
BAN(G1);
PAI(M4);
PAI(M3);
PAI(M2);
PAI(M1);
BAN(G1);
BAN(G2);
BAN(M7);
BAN(M5);
PAI(M6);
WAIT(PAIU);
}
return 0;
}
有一点点长,但是肝一会就出来了!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类