实例介绍
【实例简介】小钢琴
实现的功能有:
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;
}
标签: 钢琴
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论