最优版,自由演奏你的音乐!
每天进步一点点!
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