[C++]Beep函数演奏《牢不可破的联盟》(显示音高)

Beep函数:https://baike.baidu.com/item/Beep%E5%87%BD%E6%95%B0/5420241?fr=aladdin

//演奏《牢不可破的联盟》
#include<bits/stdc++.h>
#include <windows.h>
//定义低音do到高音xi的频率
//前缀l为低音,m中音,h高音,a是半音阶
#define l1 262
#define l2 294
#define l3 330
#define l4 349
#define l5 392
#define l6 440
#define l7 494
#define m1 523
#define m2 578
#define m3 659
#define m4 698
#define m5 784
#define m6 880
#define m7 988
#define h1 1046
#define h2 1175
#define h3 1318
#define h4 1480
#define h5 1568
#define h6 1760
#define h7 1976
#define al1 277
#define al2 311
#define al4 370
#define al5 415
#define al6 466
#define am1 554
#define am2 622
#define am4 740
#define am5 831
#define am6 932
#define ah1 1046
#define ah2 1245
#define ah4 1480
#define ah5 1661
#define ah6 1865
using namespace std;
//定义速度和音符
const int speed=30;
const int all=16;
const int f2=8;
const int f4=4;
const int f8=2;
const int f16=1;
void v(int a,int b) {
	//显示音高
	Beep(a,b*speed);
//	system("cls");
	for(int i=0; i<b/2; i++) {
		for(int i=41; i<234; i++) {
			if(a/8>=i) {
				cout<<'*';
			}
		}
		cout<<endl;
	}
}
void sleep(int a) {
	Sleep(a*speed);
	for(int i=0; i<a; i++) {
		cout<<endl;
	}
}
using namespace std;
int main() {
	v(m5,all);
	//演奏两遍
	for(int i=0; i<2; i++) {
		//1		19
		v(m1,all);
		v(m5,f2+f4);
		v(m6,f4);
		v(m7,all);
		v(m3,f2);
		v(m3,f2);
		//2		20
		v(m6,all);
		v(m5,f2+f4);
		v(m4,f4);
		v(m5,all);
		v(m1,f2+f4);
		v(m1,f4);
		//3		21
		v(m2,all);
		v(m2,f2+f4);
		v(m3,f4);
		v(m4,all);
		v(m4,f2+f4);
		v(m5,f4);
		v(m6,all);
		v(m7,f2+f4);
		v(m1,f4);
		v(h2,all+f2);
		v(m5,f2);
		//4		22
		v(h3,all);
		v(h2,f2+f4);
		v(h1,f4);
		v(h2,all);
		v(m5,f2+f4);
		v(m5,f4);
		//5		23
		v(h1,all);
		v(m7,f2+f4);
		v(m6,f4);
		v(m7,all);
		v(m3,f2);
		v(m3,f2);
		//6		24
		v(m6,all);
		v(m5,all+f2);
		v(m4,all);
		v(m5,all);
		v(m1,f4+f8);
		v(m1,f8);
		//7		25
		v(h1,all);
		v(m7,f2+f4);
		v(m6,f4);
		v(m5,all+all);
		//8		26
		v(h3,all+all);
		v(h2,f2);
		v(h1,all);
		v(m7,f2);
		v(h1,f2);
		//9		27
		v(h2,all+f2);
		v(m5,f2);
		v(m5,all+all);
		//10	28
		v(m7,all+f2);
		v(m3,f2);
		v(m3,all);
		sleep(all);
		//11	29
		v(h1,all);
		v(m6,f2+f4);
		v(m7,f4);
		v(h1,all);
		v(m6,f2+f4);
		v(m7,f4);
		//12	30
		v(h1,all);
		v(m6,f2+f4);
		v(h1,f4);
		v(m4,all);
		v(m4,f2);
		sleep(f2);
		//13	31
		v(h4,all+all);
		v(h3,f2);
		v(h2,f2);
		v(m1,f2);
		v(m2,f2);
		//14	32
		v(h3,all);
		v(h1,all);
		v(h1,all+all);
		//15	33
		v(h2,all+all);
		v(h1,f2);
		v(m7,f2);
		v(m6,f2);
		v(m7,f2);
		//16	34
		v(h1,all+f2);
		v(m6,f2);
		v(m6,all+all);
		//17	35
		v(h1,all);
		v(m7,f2);
		v(m6,f2);
		v(m5,all);
		v(m1,f2+f4);
		v(m1,f4);
		//18 	36
		v(h1,all);
		v(m7,f2+f4);
		v(m6,f4);
		v(m5,all);
		sleep(f2);
		v(m5,f2);
	}
	//37
	v(h1,all);
	v(m7,f2);
	v(m6,f2);
	v(m5,all);
	v(m1,f2+f4);
	v(m1,f4);
	//38
	v(m5,all);
	v(m6,f2);
	v(m7,f2);
	v(h1,all+all);

	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值