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("请输入持续时间(单位:秒)\n");
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("欢迎进入演奏系统\n");
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("\n\n指引: cls可以清除我的所有记忆:)\n\n祝旅途愉快!\n\n");//
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);
}
}