基本信息
源码名称:C语言-钢琴源码
源码大小:8.15KB
文件格式:.zip
开发语言:C/C++
更新时间:2021-06-10
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559

本次赞助数额为: 2 元 
   源码介绍

小钢琴

实现的功能有:

1.弹钢琴

2.建立乐谱

3.查看乐谱

4.自动演奏



#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<io.h>
#include <MMSystem.h>
#pragma comment(lib,"winmm.lib")

#define qdo 262 
#define qre 294
#define qmi 330     //q前缀为低音,1后缀为高音,s前缀为半音阶 
#define qfa 349
#define qso 392
#define qla 440
#define qsi 494
#define do 523
#define re 578
#define mi 659
#define fa 698
#define so 784
#define la 880
#define si 988
#define do1 1046
#define re1 1175
#define mi1 1318
#define fa1 1480
#define so1 1568
#define la1 1760
#define si1 1976
#define sqdo 277
#define sqre 311
#define sqfa 370
#define sqso 415
#define sqla 466
#define sdo 554
#define sre 622
#define sfa 740
#define sso 831
#define sla 932
#define sdo1 1046
#define sre1 1245
#define sfa1 1480
#define sso1 1661
#define sla1 1865
char arr[550];
char name[550];
char yuepu[20][30];
void menu();
void printPiano();
void printPiano1();
void Write(char *a,char *filename);
void color(int x);
void show();
void powerprint(char * word, int x, int y, int color_num);
static void SetPos( int  x ,  int  y );
int cnt = 0;
int k =0;

//声音函数 
void sound(char a){
char key;
switch(a){
case 'q':Beep(qdo,550);printPiano(1);break;
case 'w':Beep(qre,550);printPiano(2);break;
case 'e':Beep(qmi,550);printPiano(3);break;
case 'r':Beep(qfa,550);printPiano(4);break;
case 't':Beep(qso,550);printPiano(5);break;
case 'y':Beep(qla,550);printPiano(6);break;
case 'u':Beep(qsi,550);printPiano(7);break;
case 'a':Beep(do,550);printPiano(8);break;
case 's':Beep(re,550);printPiano(9);break;
case 'd':Beep(mi,550);printPiano(10);break;
case 'f':Beep(fa,550);printPiano(11);break;
case 'g':Beep(so,550);printPiano(12);break;
case 'h':Beep(la,550);printPiano(13);break;
case 'j':Beep(si,550);printPiano(14);break;
case 'z':Beep(do1,550);printPiano(15);break;
case 'x':Beep(re1,550);printPiano(16);break;
case 'c':Beep(mi1,550);printPiano(17);break;
case 'v':Beep(fa1,550);printPiano(18);break;
case 'b':Beep(so1,550);printPiano(19);break;
case 'n':Beep(la1,550);printPiano(20);break;
case 'm':Beep(si,550);printPiano(21);break;
}
}
//钢琴函数 
void PlayPiano(){
char a;
printPiano(0);
while(1){
a = getche();
if(a == 0x1B)
goto P;
sound(a);
if(a == '0')
break;
}
system("cls");
P:menu();
return;
}
//打印钢琴动画 
void printPiano(int i){
        system("cls");
printf("            ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪\n");
printf("                 开始游戏\n");
printf("            ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪\n");
switch(i){
case 0:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | | | | | | | | | | | | \n");
    printf("  | | | | | | | | | | | | | | | | | | | | | |\n");
    printf("  | | | | | | | | | | | | | | | | | | | | | |\n");
    printf("  | | | | | | | | | | | | | | | | | | | | | |\n");
    printf("  -------------------------------------------\n");
    break;
   case 1:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  |■| | | | | | | | | | | | | | | | | | | | | \n");
    printf("  |■| | | | | | | | | | | | | | | | | | | | |\n");
    printf("  |■| | | | | | | | | | | | | | | | | | | | |\n");
    printf("  |■| | | | | | | | | | | | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 2:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | |■| | | | | | | | | | | | | | | | | | | |\n");
    printf("  | |■| | | | | | | | | | | | | | | | | | | |\n");
    printf("  | |■| | | | | | | | | | | | | | | | | | | |\n");
    printf("  | |■| | | | | | | | | | | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 4:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | |■| | | | | | | | | | | | | | | | | |\n");
    printf("  | | | |■| | | | | | | | | | | | | | | | | |\n");
    printf("  | | | |■| | | | | | | | | | | | | | | | | |\n");
    printf("  | | | |■| | | | | | | | | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 3:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | |■| | | | | | | | | | | | | | | | | | |\n");
    printf("  | | |■| | | | | | | | | | | | | | | | | | |\n");
    printf("  | | |■| | | | | | | | | | | | | | | | | | |\n");
    printf("  | | |■| | | | | | | | | | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 5:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | |■| | | | | | | | | | | | | | | | |\n");
    printf("  | | | | |■| | | | | | | | | | | | | | | | |\n");
    printf("  | | | | |■| | | | | | | | | | | | | | | | |\n");
    printf("  | | | | |■| | | | | | | | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 6:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | |■| | | | | | | | | | | | | | | |\n");
    printf("  | | | | | |■| | | | | | | | | | | | | | | |\n");
    printf("  | | | | | |■| | | | | | | | | | | | | | | |\n");
    printf("  | | | | | |■| | | | | | | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 7:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | |■| | | | | | | | | | | | | | |\n");
    printf("  | | | | | | |■| | | | | | | | | | | | | | |\n");
    printf("  | | | | | | |■| | | | | | | | | | | | | | |\n");
    printf("  | | | | | | |■| | | | | | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 8:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | |■| | | | | | | | | | | | | |\n");
    printf("  | | | | | | | |■| | | | | | | | | | | | | |\n");
    printf("  | | | | | | | |■| | | | | | | | | | | | | |\n");
    printf("  | | | | | | | |■| | | | | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 9:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | |■| | | | | | | | | | | | |\n");
    printf("  | | | | | | | | |■| | | | | | | | | | | | |\n");
    printf("  | | | | | | | | |■| | | | | | | | | | | | |\n");
    printf("  | | | | | | | | |■| | | | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 10:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | |■| | | | | | | | | | | |\n");
    printf("  | | | | | | | | | |■| | | | | | | | | | | |\n");
    printf("  | | | | | | | | | |■| | | | | | | | | | | |\n");
    printf("  | | | | | | | | | |■| | | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 11:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | |■| | | | | | | | | | |\n");
    printf("  | | | | | | | | | | |■| | | | | | | | | | |\n");
    printf("  | | | | | | | | | | |■| | | | | | | | | | |\n");
    printf("  | | | | | | | | | | |■| | | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 12:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | |■| | | | | | | | | |\n");
    printf("  | | | | | | | | | | | |■| | | | | | | | | |\n");
    printf("  | | | | | | | | | | | |■| | | | | | | | | |\n");
    printf("  | | | | | | | | | | | |■| | | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 13:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | | |■| | | | | | | | |\n");
    printf("  | | | | | | | | | | | | |■| | | | | | | | |\n");
    printf("  | | | | | | | | | | | | |■| | | | | | | | |\n");
    printf("  | | | | | | | | | | | | |■| | | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 14:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | | | |■| | | | | | | |\n");
    printf("  | | | | | | | | | | | | | |■| | | | | | | |\n");
    printf("  | | | | | | | | | | | | | |■| | | | | | | |\n");
    printf("  | | | | | | | | | | | | | |■| | | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 15:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | | | | |■| | | | | | |\n");
    printf("  | | | | | | | | | | | | | | |■| | | | | | |\n");
    printf("  | | | | | | | | | | | | | | |■| | | | | | |\n");
    printf("  | | | | | | | | | | | | | | |■| | | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 16:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | | | | | |■| | | | | |\n");
    printf("  | | | | | | | | | | | | | | | |■| | | | | |\n");
    printf("  | | | | | | | | | | | | | | | |■| | | | | |\n");
    printf("  | | | | | | | | | | | | | | | |■| | | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 17:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | | | | | | |■| | | | |\n");
    printf("  | | | | | | | | | | | | | | | | |■| | | | |\n");
    printf("  | | | | | | | | | | | | | | | | |■| | | | |\n");
    printf("  | | | | | | | | | | | | | | | | |■| | | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 18:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | | | | | | | |■| | | |\n");
    printf("  | | | | | | | | | | | | | | | | | |■| | | |\n");
    printf("  | | | | | | | | | | | | | | | | | |■| | | |\n");
    printf("  | | | | | | | | | | | | | | | | | |■| | | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 19:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | | | | | | | | |■| | |\n");
    printf("  | | | | | | | | | | | | | | | | | | |■| | |\n");
    printf("  | | | | | | | | | | | | | | | | | | |■| | |\n");
    printf("  | | | | | | | | | | | | | | | | | | |■| | |\n");
    printf("  -----------------------------------------\n");
    break;
    case 20:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | | | | | | | | | |■| |\n");
    printf("  | | | | | | | | | | | | | | | | | | | |■| |\n");
    printf("  | | | | | | | | | | | | | | | | | | | |■| |\n");
    printf("  | | | | | | | | | | | | | | | | | | | |■| |\n");
    printf("  -----------------------------------------\n");
    break;
    case 21:printf("\n\n\n\n\n");
    printf("  □□□□□□□□□□□□□□□□□□□□□□\n");
    printf("  | | | | | | | | | | | | | | | | | | | | |■|\n");
    printf("  | | | | | | | | | | | | | | | | | | | | |■|\n");
    printf("  | | | | | | | | | | | | | | | | | | | | |■|\n");
    printf("  | | | | | | | | | | | | | | | | | | | | |■|\n");
    printf("  -----------------------------------------\n");
    break;
}
printf("\n\n\n\n\n\n                            输入0返回主菜单\n");
}
//打印主菜单 
int printMenu()
{
    printf("          ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╧╧╧╪╪╪╪╪╪\n");
    printf("          ╔═══╧╧  C语言钢琴 ╧╧══╗\n");
    printf("          ║※1.弹钢琴           ║\n");
    printf("          ║※2.建立乐谱        ║\n");
    printf("          ║※3.查看乐谱        ║\n");
printf("          ║※4.自动演奏        ║\n");
    printf("          ║※0.退出系统        ║\n");
    printf("          ╚═════════════════════╝\n");
    return 0;
}
//延时动画 
void crossing(){
system("cls");
printf("Loading.");
Sleep(400);
system("cls");
printf("Loading..");
Sleep(400);
system("cls");
printf("Loading...");
Sleep(400);
system("cls");
printf("Loading....");
Sleep(400);
system("cls");
}
//查找文件 
void find(){
cnt = 0;

long file;
struct _finddata_t find;
_chdir("d:\\install\\");
if ((file = _findfirst("*.*", &find)) == -1L)
{
printf("空白!\n");
exit(0);
}

while (_findnext(file, &find) == 0)
{
if(strcmp(find.name,"C语言大作业.c")!=0&&strcmp(find.name,"C语言大作业.exe")!=0&&strcmp(find.name,"..")!=0){
strcpy(yuepu[cnt],find.name);
cnt ;
}
}
_findclose(file);
}
//打印乐谱 
void printYue(int k){
printf("目录:\n");
if(k < 0)
k = 0;
color(11);
int i;
for(i = 0; i <cnt; i ){
if(i == k){
color(14);
printf("      ->《%s》\n",yuepu[i]);
color(11);
}else{
printf("        《%s》\n",yuepu[i]);
}
}
}
void show(){
system("cls");
char show_name[500];
color(14);
printf("        《%s》\n",yuepu[k]);
color(11);
FILE *B;
B = fopen(yuepu[k],"r");
fscanf(B,"%s",show_name);
fclose(B);
printf("%s\n",show_name);
}
void menu(){
system("title C语言钢琴");//设置cmd窗口标题
    system("mode con cols=48 lines=25");//窗口宽度高度
    system("color 0B");
    system("date /T");
    system("TIME /T");
printMenu();
char c;
c = getche();
switch(c){
case '1':
system("cls");
printf("            ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪\n");
printf("                 开始游戏\n");
printf("            ╪╪╪╪╪╪╧╧╧╧╧╧╧╧╪╪╪\n");
printf("输入0返回主菜单\n");
PlayPiano();
break;
case '2':
system("cls");
printf("\n请输入你的乐谱名字,以Enter键结束...\n");
scanf("%s",name);
//scanf("%s",name);
printf("\n\n请输入乐谱内容,以Enter键结束\n");
scanf("%s",arr);
Write(arr,name);
crossing();
printf("存储成功!\n");
system("pause");
    play:menu();
break; 
case '3'://打开乐谱 
crossing();//加载进程 
find();//寻找文件名称并存储 
printYue(k);//打印目录 
int ch;
//进行选择 
            while((ch = getch())!= 13){
            if(ch == 0x1B)
goto LOOP;
            switch (ch){
            case 0xE0:
                switch(ch = getch()){
                    case 72: {
                system("cls");
                printYue(--k);
                break;
                    }
                    case 80: {
                    system("cls");
                printYue( k);
                break;
                    }
                    default : break;
                    }
                   break;
                   default : break;
               }
            }
// move(choose);
show();
system("pause");
k = 0;
LOOP: menu();
break;
    case '0':
    break;
    default:
system("cls");
printf("请输入正确的编号!\n\n\n\n\n\n");
system("pause");
menu(); 
}
}
void Write(char *a,char *filename){
FILE *P;
P = fopen(filename,"w");
fprintf(P,"%s",a);
fclose(P);
}
void goto_xy(int x, int y)//移动光标 
{
    HANDLE hOut;
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos = { x,y };
    SetConsoleCursorPosition(hOut, pos);
}

void color(int x) //设置字体颜色

{

if(x>=0 && x<=15)

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);

else

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);

}
void powerprint(char * word, int x, int y, int color_num) 
{
    goto_xy(x, y);
    color(color_num);
    printf("%s", word);
    color(7);
}
static void SetPos( int  x ,  int  y )
{
        COORD  point = {  x ,  y  }; //光标要设置的位置x,y
        HANDLE  HOutput = GetStdHandle( STD_OUTPUT_HANDLE ); //使用GetStdHandle(STD_OUTPUT_HANDLE)来获取标准输出的句柄
       SetConsoleCursorPosition(HOutput, point); //设置光标位置
}
int main(){
menu();
return 0;