闲着无聊,用Beep写了个代码,额。。。。。。(只会乱叫)。
用了很多if,while,拜托,这样超酷easy的欸,毕竟我只是个蒟蒻。
还请大佬不要嫌弃。
(头文件是我复制的,懒得打)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <windows.h>
#include <ctime>
#include <fstream>
#include <conio.h>
#include <io.h>
#include <cmath>//pow(平方)
#include <algorithm>//sort排序
#define n 20
#define STDOUT 1
#define do 123
#define re 178
#define mi 259
#define fa 298
#define so 384
#define la 480
#define si 588
int oldstdout = dup(STDOUT);
using namespace std;
int zhuanhuan(char pd,int i)
{
if(pd=='q')
{
i=0;
}
if(pd=='w')
{
i=1;
}
if(pd=='e')
{
i=2;
}
if(pd=='r')
{
i=3;
}
if(pd=='t')
{
i=4;
}
if(pd=='y')
{
i=5;
}
if(pd=='u')
{
i=6;
}
if(pd=='i')
{
i=7;
}
return i;
}
int zhuanhuan2(char pd,int i1)
{
if(pd=='z')
{
i1=100;
}
if(pd=='x')
{
i1=200;
}
if(pd=='c')
{
i1=300;
}
if(pd=='v')
{
i1=400;
}
if(pd=='b')
{
i1=500;
}
return i1;
}
int main()
{
char pd;
int i=4,i1=300;
char dq[1000];
int i3=0,i4=0,pd2;
cout<<"钢琴模拟器\n\n\n\n";
cout<<"d,f,g,h,j,k,l分别代表do,re,mi,fa,so,la,si\n\n";
cout<<"q,w,e,r,t,y,u,i代表不同声调\n\n";
cout<<"z,x,c,v,b代表不同间隔时长\n";
Sleep(5000);
while(1)
{
system("cls");
cout<<"选择 (1)正常 (2)录音 (3)放音 (0)退出\n";
pd2=getch();
system("cls");
if(pd2=='1')
{
while(1)
{
cout<<"声调:"<<i<<endl;
cout<<"间隔:"<<i1<<endl;
cout<<"输入0退出\n";
pd=getch();
system("cls");
if(pd=='q'||pd=='w'||pd=='e'||pd=='r'||pd=='t'||pd=='y'||pd=='u'||pd=='i')
{
i=zhuanhuan(pd,i);
}
if(pd=='z'||pd=='x'||pd=='c'||pd=='v'||pd=='b')
{
i1=zhuanhuan2(pd,i1);
}
if(pd=='d')
{
Beep(do+(i*100),i1);
cout<<"音符:do"<<endl;
}
if(pd=='f')
{
Beep(re+(i*100),i1);
cout<<"音符:re"<<endl;
}
if(pd=='g')
{
Beep(mi+(i*100),i1);
cout<<"音符:mi"<<endl;
}
if(pd=='h')
{
Beep(fa+(i*100),i1);
cout<<"音符:fa"<<endl;
}
if(pd=='j')
{
Beep(so+(i*100),i1);
cout<<"音符:so"<<endl;
}
if(pd=='k')
{
Beep(la+(i*100),i1);
cout<<"音符:la"<<endl;
}
if(pd=='l')
{
Beep(si+(i*100),i1);
cout<<"音符:si"<<endl;
}
if(pd=='0')
{
break;
}
}
}
if(pd2=='2')
{
while(1)
{
cout<<"声调:"<<i<<endl;
cout<<"间隔:"<<i1<<endl;
cout<<"输入0录音结束\n";
pd=getch();
dq[i3]=pd;
system("cls");
if(pd=='q'||pd=='w'||pd=='e'||pd=='r'||pd=='t'||pd=='y'||pd=='u'||pd=='i')
{
i=zhuanhuan(pd,i);
}
if(pd=='z'||pd=='x'||pd=='c'||pd=='v'||pd=='b')
{
i1=zhuanhuan2(pd,i1);
}
if(pd=='d')
{
Beep(do+(i*100),i1);
cout<<"音符:do"<<endl;
}
if(pd=='f')
{
Beep(re+(i*100),i1);
cout<<"音符:re"<<endl;
}
if(pd=='g')
{
Beep(mi+(i*100),i1);
cout<<"音符:mi"<<endl;
}
if(pd=='h')
{
Beep(fa+(i*100),i1);
cout<<"音符:fa"<<endl;
}
if(pd=='j')
{
Beep(so+(i*100),i1);
cout<<"音符:so"<<endl;
}
if(pd=='k')
{
Beep(la+(i*100),i1);
cout<<"音符:la"<<endl;
}
if(pd=='l')
{
Beep(si+(i*100),i1);
cout<<"音符:si"<<endl;
}
if(pd=='0')
{
break;
}
i3++;
}
freopen("录音.txt","w",stdout);
for(int j=0;j<i3;j++)
{
cout<<dq[j]<<" ";
}
freopen("CON", "w", stdout);
dup2(oldstdout,STDOUT);
}
if(pd2=='3')
{
freopen("录音.txt","r",stdin);
for(int j=0;j<1000;j++)
{
cin>>dq[j];
}
freopen("CON", "r", stdin);
while(1)
{
cout<<"声调:"<<i<<endl;
cout<<"间隔:"<<i1<<endl;
cout<<"输入0退出\n";
pd=dq[i4];
system("cls");
if(pd=='q'||pd=='w'||pd=='e'||pd=='r'||pd=='t'||pd=='y'||pd=='u'||pd=='i')
{
i=zhuanhuan(pd,i);
}
if(pd=='z'||pd=='x'||pd=='c'||pd=='v'||pd=='b')
{
i1=zhuanhuan2(pd,i1);
}
if(pd=='d')
{
Beep(do+(i*100),i1);
cout<<"音符:do"<<endl;
}
if(pd=='f')
{
Beep(re+(i*100),i1);
cout<<"音符:re"<<endl;
}
if(pd=='g')
{
Beep(mi+(i*100),i1);
cout<<"音符:mi"<<endl;
}
if(pd=='h')
{
Beep(fa+(i*100),i1);
cout<<"音符:fa"<<endl;
}
if(pd=='j')
{
Beep(so+(i*100),i1);
cout<<"音符:so"<<endl;
}
if(pd=='k')
{
Beep(la+(i*100),i1);
cout<<"音符:la"<<endl;
}
if(pd=='l')
{
Beep(si+(i*100),i1);
cout<<"音符:si"<<endl;
}
if(pd=='0')
{
break;
}
i4++;
}
i4=0;
}
if(pd2=='0')
{
break;
}
}
return 0;
}