C语言编译键盘钢琴,键盘小钢琴[C语言][自持]

键盘小钢琴[C语言][自制]

大一上最喜欢的一个作品

0911071829.gif。刚开始只是一个能自动发出小星星音乐的小程序XD

效果图:

0911071830.png

代码如下:

/*This is a small piano.这是一个小钢琴哦~*/

#include

#include //非缓冲输入

#include

#include

#pragma warning(disable:4996) //to use getche() in VS needs it

#define TICK 450

#define DOH 523

#define RAY 587

#define MI 659

#define FA 698

#define SOH 784

#define LA 880

#define TEE 980

#define DOHH 1060

#define RAYH 1175

#define MIH 1318

#define FAH 1397

#define SOHH 1568

#define LAH 1760

#define TEEH 1976

void welcome(void);

void display(void);

void playmusic1(void); //play music with color

void playmusic2(void); //play music without color

void thanks(void);

void choose1(void); //choose a type

void choose2(void); //choose a song

void song1(void);

void song2(void);

char a;

int choice,choice2;

int main(void)

{

welcome();

if (choice == 2)

{

printf("Enter numbers to play music:('p' to quit)\n");

while (1)

{

playmusic1();

if (a == 'p')

break;

}

}

else

{

printf("Please choose the song you want to play:\n"

"1.Castle In The Sky(天空之城)\n2.星の在り処(星之所在)\n");

choose2();

}

thanks();

return 0;

}

void welcome(void)

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);

printf("1-DOH 2-RAY 3-MI 数字1到7,字母Q\n"

"4-FA 5-SOH 6-LA WERTYU分别对应音阶\n"

"7-TEE Q-DOHH W-RAYH\n"

"E-MIH R-FAH T-SOH\n"

"Y-LAH U-TEEH\n");

display();

choose1();

}

void display(void)

{

int i;

for (i = 0; i < 80; i++)

printf("=");

}

void choose1(void)

{

printf("Choose a game type:\n1.play songs(弹奏模式)\t2.free play(自由模式)\n");

while ((scanf("%d", &choice)) != 1)

{

while (getchar() != '\n');

printf("Please enter a number ~");

}

display();

}

void choose2(void)

{

while ((scanf("%d", &choice2)) != 1)

{

while (getchar() != '\n')

printf("Please enter a number ~");

}

display();

if (choice2 == 1)

song1();

else song2();

printf("Enter numbers to play music:('p' to quit)\n");

while (1)

{

playmusic2();

if (a == 'p')

break;

}

}

void playmusic1(void) //发声并设置颜色

{

a = getch();

switch (a)

{

case '1':Beep(DOH, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 30); printf("DOH "); break;

case '2':Beep(RAY, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 60); printf("RAY "); break;

case '3':Beep(MI, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 90); printf("MI "); break;

case '4':Beep(FA, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 120); printf("FA "); break;

case '5':Beep(SOH, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 150); printf("SOH "); break;

case '6':Beep(LA, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 180); printf("LA "); break;

case '7':Beep(TEE, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 210); printf("TEE "); break;

case 'q':Beep(DOHH, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 30); printf("DOHH "); break;

case 'w':Beep(RAYH, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 60); printf("RAYH "); break;

case 'e':Beep(MIH, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 90); printf("MIH "); break;

case 'r':Beep(FAH, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 120); printf("FA "); break;

case 't':Beep(SOHH, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 150); printf("SOH "); break;

case 'y':Beep(LAH, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 180); printf("LA "); break;

case 'u':Beep(TEEH, TICK); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 210); printf("TEE "); break;

case '\n':break;

default :break;

}

}

void playmusic2(void) //发声

{

a = getch();

switch (a)

{

case '1':Beep(DOH, TICK); break;

case '2':Beep(RAY, TICK); break;

case '3':Beep(MI, TICK); break;

case '4':Beep(FA, TICK); break;

case '5':Beep(SOH, TICK); break;

case '6':Beep(LA, TICK); break;

case '7':Beep(TEE, TICK); break;

case 'q':Beep(DOHH, TICK); break;

case 'w':Beep(RAYH, TICK); break;

case 'e':Beep(MIH, TICK); break;

case 'r':Beep(FAH, TICK); break;

case 't':Beep(SOHH, TICK); break;

case 'y':Beep(LAH, TICK); break;

case 'u':Beep(TEEH, TICK); break;

case '\n':break;

default:break;

}

}

void thanks(void)

{

putchar('\n');

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);

display();

printf("Thanks for playing~~~\n");

system("pause");

}

void song1(void) //天空之城

{

printf("67Q7QE7 3656Q5 3434Q3 \n");

}

void song2(void) //星之所在

{

printf("Q7QE7 656Q5 434Q75 67QEW Q7QE75 67QWE REWQ7E\n");

}

版权声明:欢迎转载(^ω^)~不过转载请注明原文出处:http://blog.csdn.net/catglory ლ(╹◡╹ლ)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值