Y15BeTa蜂鸣器唱歌程序-演奏版

最优版,自由演奏你的音乐!

每天进步一点点!

2018-12-09最新版

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;

int md[8]={0,262,294,330,349,392,440,494},
    mz[8]={0,523,587,659,698,784,880,988},
    mg[8]={0,1046,1175,1318,1397,1568,1760,1967};

int tot=0;

inline void gotoxy(int y,int x);

inline void open();

inline int pinglv(string s);

inline void ywy_beep(string s);

//inline void change_start_music();

inline void gotoxy(int y,int x){  
    COORD pos;  
    pos.X=x;  
    pos.Y=y;  
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos); 
}  

inline void ywy_beep(string s){
    if(s=="cls"){
        tot=0;
        system("cls");
        return;
    }
    else if(s[0]=='B'){//手动,半调及连长音暂时只能用此解决 
        string a;int b;
        cin>>a>>b;
        int p=pinglv(a);
        if(p!=0)Beep(p,b);
        else{
            int ia=0;
            for(int i=0;i<=a.size()-1;i++)ia=ia*10+int(a[i])-48;
            Beep(ia,b);
        }
    }
    else if(s=="rand"){
        printf("请输入持续时间(单位:秒)
");
        int ha;
        scanf("%d",&ha);
        ha*=5;
        while(ha--)Beep(abs((rand()+ha*ha)%1500),200);
    }
    else if(s[0]=='&'){//微调:换气或隔音 
        Sleep(50);
    }
    else if(s[0]=='0'){//休止符 
        Sleep(300);
    }
    else{
        int p=pinglv(s);
        if(p!=0){
            Beep(p,300);
        }
        else{
            cout<<"震惊*"<<++tot;
            for(int i=1;i<=tot;i++)cout<<'!';
            cout<<endl;
        }
    }
}

inline void open(){
    gotoxy(11,30);
    printf("欢迎进入演奏系统
");
    for(int i=1;i<=3*88889999;i++);
    gotoxy(24,0);
    Beep(mz[1],180);
    Beep(mz[2],190);
    Beep(mz[3],200);
    Beep(mz[4],210);
    Beep(mz[5],700);
    printf("加载中");
    for(int i=1;i<=70;i++){
        printf(">");
        Sleep(10);
    }
    system("cls");
    system("pause");
    printf("

指引:  cls可以清除我的所有记忆:)

祝旅途愉快!

");//
    system("pause");
}

inline int pinglv(string s){
    if(s[0]>='1'&&s[0]<='7'&&s.size()==1){//中音 
        int ha=int(s[0]-'0');
        return mz[ha];
    }
    else if(s[0]=='d'&&s[1]>='1'&&s[1]<='7'&&s.size()==2){//低音 
        int ha=int(s[1]-'0');
        return md[ha];
    }
    else if(s[0]=='g'&&s[1]>='1'&&s[1]<='7'&&s.size()==2){//高音 
        int ha=int(s[1]-'0');
        return mg[ha];
    }
    else return 0;
}

int main(){
    srand(time(0));
    open();
    while(1){
        string s;
        cin>>s;
        ywy_beep(s);
    }
}

升级说明:

21:09 2018-11-06
1.加快了"加载中"的速度
2."手动模式"分两种格式:
    (1)B int int 前一个int表示频率,后一个int表示持续时间(单位:毫秒)
    (2)B string int 前一个string和正常模式下的输入相同,eg:1 d1 g1
            后一个int表示持续时间(单位:毫秒)
3.对于"输入格式错误"的语句,升级后将不再输出a,而输出一句神奇的话(动手试试吧!)

升级说明:

17:09 2018-12-09 
1.添加了"前奏音乐"2.优化了"函数"

附送礼包:卡农

B g3 1200
B g2 1200
B g1 1200
B 7 1200
B 6 1200
B 5 1200
B 6 1200
B 7 1200
B g1 1200
B 7 1200
B 6 1200
B 5 1200
B 4 1200
B 3 1200
B 4 1200
B 2 1200
B g1 300
B 7 300
B g1 300
B 1 300
B d7 300
B 5 300
B 2 300
B 3 300
B 1 300
B g1 300
B 7 300
B 6 300
B g7 300
B g3 300
B g5 300
B g6 300
B g4 300
B g3 300
B g2 300
B g4 300
B g4 300
B g3 300
B g1 300
B 7 300
B 6 300
B 5 300
B 4 300
B 3 300
B 2 300
B 4 300
B 3 300
B 2 300
B 1 300
B 2 300
B 3 300
B 4 300
B 5 300
B 2 300
B 5 300
B 4 300
B 3 300
B 6 300
B 5 300
B 4 300
B 5 300
B 4 300
B 3 300
B 2 300
B 1 300
B d6 300
B 6 300
B 7 300
B g1 300
B 7 300
B 6 300
B 5 300
B 4 300
B 3 300
B 2 300
B 6 300
B 5 300
B 6 300
B 5 300
B 4 300
B 3 600
B g3 600
B g2 1200
B g1 1200
B g2 1200
B g1 600
B g3 600
B g2 600
B g4 600
B g5 300
B g3 150
B g4 150
B g5 300
B g3 150
B g4 150
B g5 150
B 5 150
B 6 150
B 7 150
B g1 150
B g2 150
B g3 150
B g4 150
B g3 300
B g1 150
B g2 150
B g3 300
B 3 150
B 4 150
B 5 150
B 6 150
B 5 150
B 4 150
B 5 150
B 3 150
B 4 150
B 5 150
B 4 300
B 6 150
B 5 150
B 4 300
B 3 150
B 2 150
B 3 150
B 2 150
B 1 150
B 2 150
B 3 150
B 4 150
B 5 150
B 6 150
B 4 300
B 6 150
B 5 150

B 6 300
B 7 150
B g1 150

B 5 150
B 6 150
B 7 150
B g1 150

B g2 150
B g3 150
B g4 150
B g5 150


B g3 300
B g1 150
B g2 150

B g3 300
B g2 150
B g1 150

B g2 150
B 7 150
B g1 150
B g2 150

B g3 150
B g2 150
B g1 150
B 7 150

B g1 300
B 6 150
B 7 150

B g1 300
B 1 150
B 2 150

B 3 150
B 4 150
B 3 150
B 2 150

B 3 150
B g1 150
B 7 150
B g1 150

B 6 300
B g1 150
B 7 150

B 6 300
B 5 150
B 4 150

B 5 150
B 4 150
B 3 150
B 4 150

B 5 150
B 6 150
B 7 150
B 1 150

B 6 300
B g1 150
B 7 150

B g1 300
B 7 150
B 6 150

B 7 150
B g1 150
B g2 150
B g1 150

B 7 150
B g1 150
B 6 150
B 7 150

B g3 300
B 3 300
B 4 300
B 3 300

B 2 300
B g2 300
B g3 300
B g2 300

B g1 300
B 3 300
B 1 300
B 6 300

B 5 300
B d5 300
B d4 300
B d5 300

B d6 300
B 6 300
B 7 300
B 6 300

B 7 300
B d5 300
B d4 300
B d5 300

B d6 300
B 6 300
B 5 300
B 6 300

B 7 300
B 7 300
B 6 300
B 7 300

B 1 300
B g1 300
B g2 300
B g1 300

B 7 300
B d7 300
B 1 300
B d7 300

B d6 300
B 6 300
B 5 300
B 6 300

B 7 300
B d7 300
B 3 300
B 2 300

B 1 300
B g1 300
B g2 300
B g4 300

B g3 300
B 3 300
B 5 300
B g3 300

B g1 300
B g4 300
B g3 300
B g4 300

B g2 300
B 5 300
B 4 300
B 5 300

B 3 300
B g1 150
B 7 150

B g1 300
B 3 300

B 5 300
B 5 150
B 6 150

B 7 300
B 5 300

B 3 300
B g1 150
B g2 150

B g3 300
B g1 300

B g3 300
B g3 150
B g2 150

B g1 300
B 7 300

B 6 300
B 6 150
B 5 150

B 6 300
B 7 300

B g1 300
B g3 150
B g2 150

B g1 300
B g3 300
View Code
原文地址:https://www.cnblogs.com/Y15BeTa/p/FengMingQi__1.html