如何用 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;
}

有一点点长,但是肝一会就出来了!!!

posted @   MituFun  阅读(365)  评论(1编辑  收藏  举报
编辑推荐:
· .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技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示