c++制作的“音乐计时器”,结束后播放《天空之城》

Posted zjw0521

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++制作的“音乐计时器”,结束后播放《天空之城》相关的知识,希望对你有一定的参考价值。

tips:这个程序我还做了一个下载的

这个计时器好像是全站为数不多的结束后有声音提醒的计时器,类似于秒表

我做的这个计时器,主要用到的函数是Sleep(),Sleep函数的头文件是windows.h

先介绍一下这个函数的用处:

Sleep函数可以使计算机程序(进程,任务或线程)进入休眠,简单来说就是让程序停止工作一个特定时间,单位是毫秒,比如:

#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
int main(){
    cout << "程序开始" << endl;
    clock_t start = clock();
    clock_t end;
    Sleep(2000);
    end = clock();
    cout << "Sleep(2000)这个函数执行了" << (end - start) / 1000 << "秒";
    return 0;
}

  上图是运行结果

然后要让电脑演奏音乐,要用Beep()函数,音乐就是《天空之城》

Beep函数的头文件依旧是windows.h

Beep()函数有两个参数一个是音高,另一个时长,第二个单位同样是毫秒,第一个我就不知道了,不过要一次一次这样反复的写还是相当麻烦的,所以可以把每个音都改成宏变量,就能方便不少,低音do是262,低音re是294,低音fa是330,低音fa是349,低音so是392,低音la是440,低音si是494,do是523,re是578,mi是659,fa是698,so是784,la是880,si是988,在高我就不写了,其他音都列在下面的代码里了

#define qdo 262 
#define qre 294
#define qmi 330
#define qfa 349
#define qso 392
#define qla 440
#define qsi 494
#define do 523
#define re 578
#define mi 659
#define fa 698
#define so 784
#define la 880
#define si 988
#define do1 1046
#define re1 1175
#define mi1 1318
#define fa1 1480
#define so1 1568
#define la1 1760
#define si1 1976
#define sqdo 277
#define sqre 311
#define sqfa 370
#define sqso 415
#define sqla 466
#define sdo 554
#define sre 622
#define sfa 740
#define sso 831
#define sla 932
#define sdo1 1046
#define sre1 1245
#define sfa1 1480
#define sso1 1661
#define sla1 1865

接下来,要注意一下音乐中间的休止符和每个音符的长度,我就都设置8分(好像是)音符是400毫秒,停顿是128毫秒

下面是天空之城的演奏音乐

#include <iostream>
#include <windows.h>
using namespace std;
#define qdo 262 
#define qre 294
#define qmi 330
#define qfa 349
#define qso 392
#define qla 440
#define qsi 494
#define do 523
#define re 578
#define mi 659
#define fa 698
#define so 784
#define la 880
#define si 988
#define do1 1046
#define re1 1175
#define mi1 1318
#define fa1 1480
#define so1 1568
#define la1 1760
#define si1 1976
#define sqdo 277
#define sqre 311
#define sqfa 370
#define sqso 415
#define sqla 466
#define sdo 554
#define sre 622
#define sfa 740
#define sso 831
#define sla 932
#define sdo1 1046
#define sre1 1245
#define sfa1 1480
#define sso1 1661
#define sla1 1865
int days;
int hours;
int mintues;
int seconds
int main(){
    int pai = 400,ban = 200;
    int ting = 128;
    Sleep(1000);
    Beep(la,ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai + ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(mi1,pai);
    Sleep(ting);
    Beep(si,3 * pai);
    Sleep(ting);
    Beep(mi,ban);
    Beep(mi,ban);
    Beep(la,ban + pai);
    Beep(so,ban);
    Sleep(ting);
    Beep(la,pai);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(so,2 * pai);
    Sleep(ting);
    Sleep(pai);
    Beep(mi,ban);
    Sleep(ting / 2);
    Beep(mi,ban);
    Sleep(ting / 2);     
    Beep(fa,pai + ban);
    Beep(mi,ban);
    Sleep(ting);
    Beep(fa,ban);
    Beep(do1,ban + pai);
    Sleep(ting);
    Beep(mi,2 * pai);
    Sleep(ting);
    Sleep(ban);
    Beep(do1,ban);
    Sleep(ting / 2);
    Beep(do1,ban);
    Sleep(ting / 2);
    Beep(do1,ban);
    Sleep(ting / 2);
    Beep(si,ban + pai);
    Beep(sfa,ban);
    Sleep(ting);
    Beep(sfa,pai);
    Beep(si,pai);
    Sleep(ting);
    Beep(si,2 * pai);
    Sleep(ting);
    Sleep(pai);
    //只有1遍
    return 0;
} 

然后,就是计时器的制作了:

(1)做到每秒输出一次,不会受循环控制

要做到这一点,就要用到之前说的Sleep()函数,每过1秒,就循环1次,循环的计算时间基本可以忽略不计,每次循环Seconds--就行了

这一步的代码段如下

void CountDown_Seconds(int &Days,int &Hours,int &Mintues,int &Seconds){
    for(;Seconds >= 0;Seconds--){
        cout << "倒计" << Days << "" << Hours << "" << Mintues << "" << Seconds << "秒" << endl;
        Sleep(1000);
        system("cls");
    }
}

(2)分钟计时

每分钟这个就直接每次循环调用CountDown_Seconds函数就可以了,每次60秒后把Seconds
改成59就可以了

void CountDown_Mintues(int &Days,int &Hours,int &Mintues,int &Seconds){
    for (;Mintues >= 0;Mintues--){
        CountDown_Seconds(Days,Hours,Mintues,Seconds);
        Seconds = 59;
    }
}

同样,小时和天也一样,不停调用分钟和小时就可以了,这两步就放在一起了:

void CountDown_Hours(int &Days,int &Hours,int &Mintues,int &Seconds){
    for (;Hours >= 0;Hours--){
        CountDown_Mintues(Days,Hours,Mintues,Seconds);
        Mintues = 59;
    }
}
void CountDown(int Days,int Hours,int Mintues,int Seconds){
    for(;Days >= 0;Days--){
        CountDown_Hours(Days,Hours,Mintues,Seconds);
        Hours = 23;
    }
}

剩下的就是输入部分了

void printMenu(){
    cout << "欢迎进入间倒计系统"<<endl;
    cout << endl;
}
void Input(){
    cout<<"请输入时间:格式:天 时 分 秒"<<endl;
    cin >> days >> hours >> mintues >> seconds;
    cout << endl;
}

最后附上完整代码:

#include <iostream>
#include <windows.h>
using namespace std;
#define qdo 262 
#define qre 294
#define qmi 330
#define qfa 349
#define qso 392
#define qla 440
#define qsi 494
#define do 523
#define re 578
#define mi 659
#define fa 698
#define so 784
#define la 880
#define si 988
#define do1 1046
#define re1 1175
#define mi1 1318
#define fa1 1480
#define so1 1568
#define la1 1760
#define si1 1976
#define sqdo 277
#define sqre 311
#define sqfa 370
#define sqso 415
#define sqla 466
#define sdo 554
#define sre 622
#define sfa 740
#define sso 831
#define sla 932
#define sdo1 1046
#define sre1 1245
#define sfa1 1480
#define sso1 1661
#define sla1 1865
int days;
int hours;
int mintues;
int seconds;
void printMenu(){
    cout << "欢迎进入间倒计系统"<<endl;
    cout << endl;
}
void Input(){
    cout<<"请输入时间:格式:天 时 分 秒"<<endl;
    cin >> days >> hours >> mintues >> seconds;
    cout << endl;
}
void CountDown_Seconds(int &Days,int &Hours,int &Mintues,int &Seconds){
    for(;Seconds >= 0;Seconds--){
        cout << "倒计" << Days << "" << Hours << "" << Mintues << "" << Seconds << "秒" << endl;                Sleep(1000);//Sleep看清楚间
        system("cls");
    }

}
void CountDown_Mintues(int &Days,int &Hours,int &Mintues,int &Seconds){
    for (;Mintues >= 0;Mintues--){
        CountDown_Seconds(Days,Hours,Mintues,Seconds);
        Seconds = 59;
    }
}
void CountDown_Hours(int &Days,int &Hours,int &Mintues,int &Seconds){
    for (;Hours >= 0;Hours--){
        CountDown_Mintues(Days,Hours,Mintues,Seconds);
        Mintues = 59;
    }
}
void CountDown(int Days,int Hours,int Mintues,int Seconds){
    for(;Days >= 0;Days--){
        CountDown_Hours(Days,Hours,Mintues,Seconds);
        Hours = 23;
    }
}
int main(){
    int i = 1;
    int set;
    printMenu();
    while (i <= 3){
        Input();
        cout << "确认???:" << days << "天" << hours << "时" << mintues << "分" << seconds << "秒" << endl;
        cout << "确认请按1,否则请按0:";
        cin >> set;
        if (set){
            break;
        }
        i++;
    }
    CountDown(days,hours,mintues,seconds);
    int pai = 400,ban = 200;
    int ting = 128;
    Sleep(1000);
    Beep(la,ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai + ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(mi1,pai);
    Sleep(ting);
    Beep(si,3 * pai);
    Sleep(ting);
    Beep(mi,ban);
    Beep(mi,ban);
    Beep(la,ban + pai);
    Beep(so,ban);
    Sleep(ting);
    Beep(la,pai);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(so,2 * pai);
    Sleep(ting);
    Sleep(pai);
    Beep(mi,ban);
    Sleep(ting / 2);
    Beep(mi,ban);
    Sleep(ting / 2);     
    Beep(fa,pai + ban);
    Beep(mi,ban);
    Sleep(ting);
    Beep(fa,ban);
    Beep(do1,ban + pai);
    Sleep(ting);
    Beep(mi,2 * pai);
    Sleep(ting);
    Sleep(ban);
    Beep(do1,ban);
    Sleep(ting / 2);
    Beep(do1,ban);
    Sleep(ting / 2);
    Beep(do1,ban);
    Sleep(ting / 2);
    Beep(si,ban + pai);
    Beep(sfa,ban);
    Sleep(ting);
    Beep(sfa,pai);
    Beep(si,pai);
    Sleep(ting);
    Beep(si,2 * pai);
    Sleep(ting);
    Sleep(pai);
    Beep(la,ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai + ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(mi1,pai);
    Sleep(ting);
    Beep(si,2 * pai);
    Sleep(ting);
    Sleep(pai);
    Beep(mi,ban);
    Sleep(20);
    Beep(mi,ban);
    Sleep(ting);  
    Beep(la,pai+ban);
    Beep(so,ban);
    Sleep(ting);
    Beep(la,pai);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(so,3 * pai);
    Sleep(ting+ban);
    Beep(mi,ban);
    Sleep(ting / 2); 
    Beep(fa,pai);
    Sleep(ting);
    Beep(do1,ban);
    Beep(si,ban);
    Sleep(20);
    Beep(si,pai);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(re1,ban);
    Sleep(20);
    Beep(re1,ban);
    Sleep(20);
    Beep(mi1,ban);
    Sleep(ting / 2);
    Beep(do1,pai);
    Sleep(ting + pai);
    Beep(do1,pai);
    Beep(si,ban);
    Sleep(ting);
    Beep(la,ban);
    Sleep(20);
    Beep(la,ban);
    Sleep(ting);
    Beep(si,pai);
    Sleep(ting);
    Beep(sso,pai);
    Sleep(ting);
    Beep(sso,2 * pai);
    Sleep(ting + pai);
    Beep(do1,ban);
    Beep(re1,ban);
    Sleep(ting);
    Beep(mi1,pai + ban);
    Beep(re1,ban);
    Sleep(ting);
    Beep(mi1,pai);
    Sleep(ting);
    Beep(fa1,pai);
    Sleep(ting);
    Beep(re1,2 * pai);
    Sleep(pai + ting);
    Beep(so,ban);
    Sleep(20);
    Beep(so,ban);
    Sleep(ting);
    Beep(do1,ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(mi1,pai);
    Sleep(ting);
    Beep(mi1,2 * pai);
    Sleep(ting + 2 * pai);
    Beep(la,ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(si,pai);
    Sleep(ting);
    Beep(re1,ban);
    Sleep(20);
    Beep(re1,ban);
    Sleep(ting);
    Beep(do1,pai + ban);
    Beep(so,ban);
    Sleep(20);
    Beep(so,pai);
    Sleep(pai + ting);
    Beep(fa1,pai);
    Sleep(ting);
    Beep(mi1,pai);
    Sleep(ting);
    Beep(re1,pai);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(mi1,4 * pai);
    Beep(mi1,pai * 2);
    Sleep(pai + ting);
    Beep(mi1,pai);
    Sleep(ting);
    Beep(la1,2 * pai);
    Sleep(ting);
    Beep(so1,pai);
    Sleep(ting);
    Beep(so1,pai);
    Sleep(ting);
    Beep(mi1,ban);
    Sleep(ting / 2);
    Beep(re1,ban);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting + ban);
    Beep(do1,ban);
    Sleep(ting);
    Beep(re1,pai);
    Sleep(ting);
    Beep(do1,ban);
    Beep(re1,ban);
    Sleep(20);
    Beep(re1,ban);
    Sleep(ting);
    Beep(so1,pai);
    Sleep(ting);
    Beep(mi1,2 * pai);
    Sleep(ting + pai);
    Beep(mi,pai);
    Sleep(ting);
    Beep(la1,2 * pai);
    Sleep(ting);
    Beep(so1,2 * pai);
    Sleep(ting);
    Beep(mi1,ban);
    Beep(re1,ban);
    Sleep(ting);
    Beep(do1,2 * pai);
    Sleep(ting + ban);
    Beep(do1,ban);
    Sleep(ting);
    Beep(re1,pai);
    Sleep(ting);
    Beep(do1,ban);
    Beep(re1,ban);
    Sleep(20);
    Beep(re1,ban);
    Sleep(ting);
    Beep(si,pai);
    Sleep(ting);
    Beep(la,2 * pai);
    Sleep(ting);
    Beep(la,ban);
    Beep(si,ban);
    Beep(do1,pai + ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(mi1,pai);
    Sleep(ting);
    Beep(si,3 * pai);
    Sleep(ting);
    Beep(mi,ban);
    Beep(mi,ban);
    Beep(la,ban + pai);
    Beep(so,ban);
    Sleep(ting);
    Beep(la,pai);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(so,2 * pai);
    Sleep(ting);
    Sleep(pai);
    Beep(mi,ban);
    Sleep(ting / 2);
    Beep(mi,ban);
    Sleep(ting / 2);
    Beep(fa,pai + ban);
    Beep(mi,ban);
    Sleep(ting);
    Beep(fa,ban);
    Beep(do1,ban + pai);
    Sleep(ting);
    Beep(mi,2 * pai);
    Sleep(ting);
    Sleep(ban);
    Beep(do1,ban);
    Sleep(ting / 2);
    Beep(do1,ban);
    Sleep(ting / 2);
    Beep(do1,ban);
    Sleep(ting / 2);
    Beep(si,ban + pai);
    Beep(sfa,ban);
    Sleep(ting);
    Beep(sfa,pai);
    Beep(si,pai);
    Sleep(ting);
    Beep(si,2 * pai);
    Sleep(ting);
    Sleep(pai);
    Beep(la,ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai + ban);
    Beep(si,ban);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(mi1,pai);
    Sleep(ting);
    Beep(si,2 * pai);
    Sleep(ting);
    Sleep(pai);
    Beep(mi,ban);
    Sleep(20);
    Beep(mi,ban);
    Sleep(ting);
    Beep(la,pai + ban);
    Beep(so,ban);
    Sleep(ting);
    Beep(la,pai);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(so,3 * pai);
    Sleep(ting + ban);
    Beep(mi,ban);
    Sleep(ting / 2);
    Beep(fa,pai);
    Sleep(ting);
    Beep(do1,ban);
    Beep(si,ban);
    Sleep(20);
    Beep(si,pai);
    Sleep(ting);
    Beep(do1,pai);
    Sleep(ting);
    Beep(re1,ban);
    Sleep(20);
    Beep(re1,ban);
    Sleep(20);
    Beep(mi1,ban);
    Sleep(ting / 2);
    Beep(do1,pai);
    Sleep(ting + pai);
    Beep(la,4 * pai);
    Sleep(1000);
    main();
    return 0;
} 

大家给个赞再走呗

以上是关于c++制作的“音乐计时器”,结束后播放《天空之城》的主要内容,如果未能解决你的问题,请参考以下文章

Proteus仿真51单片机驱动蜂鸣器播放《天空之城》

视频结束后更改横幅[重复]

ZT:通过Unity3D制作天空盒子

C++ 制作一个“测运”小游戏-rand()函数的应用

ue4怎么实现动画蒙太奇播放完后物体出现在动画结束时候位置

OpenCV + Qt 制作视频播放器