📄 piano.c
字号:
#include<conio.h>
#include<graphics.h>
#include<stdio.h>
#define KEY_WIDTH 60
#define KEY_HEIGHT 280
int ESC=27;
/*initialize the graphic*/
void initgr()
{
int gd=DETECT,gm=0;
initgraph(&gd,&gm,"E:\\turboc3");
}
/*the key being pressed*/
void down(int x,int y)
{
setcolor(WHITE);
setfillstyle(SOLID_FILL,WHITE);
bar(x,y,x+KEY_WIDTH,y+KEY_HEIGHT-13);
setcolor(DARKGRAY);
setfillstyle(SOLID_FILL,RED);
bar(x,y+KEY_HEIGHT-13,x+KEY_WIDTH,y+KEY_HEIGHT);
}
/*the key being release*/
void up(int x,int y)
{
setcolor(WHITE);
setfillstyle(SOLID_FILL,WHITE);
bar(x,y,x+KEY_WIDTH,y+KEY_HEIGHT-20);
setcolor(DARKGRAY);
setfillstyle(SOLID_FILL,DARKGRAY);
bar(x,y+KEY_HEIGHT-20,x+KEY_WIDTH,y+KEY_HEIGHT);
}
void start()
{
int i=0;
/*set the background*/
setbkcolor(LIGHTGRAY);
/*this is the title*/
settextstyle(0,0,5);
setcolor(RED);
outtextxy(110,42,"SUPER PIANO");
for(i=0;i<7;i++)
{
up(100+i*(KEY_WIDTH+5),110);
} /*the key*/
settextstyle(0,0,1);
setcolor(LIGHTRED);
outtextxy(175,420,"KEY:1->a,2->s,3->d,4->f,5->j,6->k,7->l,Quit-Esc");
setcolor(BLUE);
outtextxy(215,440,"KEY:u->low,i->mid,o->high,p->highest");
outtextxy(215,460,"All Rights to Angel.v");
}
main()
{
int i=0,p=0;
char key=' ',key1,key2;
initgr(); /* initialize the BGI */
for(;;)
{
cleardevice();
start();
while(key!=ESC)
{
for(i=0;i<7;i++)
{
up(100+i*(KEY_WIDTH+5),110);
} /*release the key first*/
if(p==0)
{key1=getch();p=1;}
if(key1=='u'||key1=='U')
{ key=getch();
switch(key)
{
case 'A':
case 'a':down(100,110);sound(131);delay(100);nosound();break;
case 'S':
case 's':down(165,110);sound(147);delay(100);nosound();break;
case 'D':
case 'd':down(230,110);sound(155);delay(100);nosound();break;
case 'F':
case 'f':down(295,110);sound(176);delay(100);nosound();break;
case 'J':
case 'j':down(360,110);sound(196);delay(100);nosound();break;
case 'K':
case 'k':down(425,110);sound(220);delay(100);nosound();break;
case 'L':
case 'l':down(490,110);sound(247);delay(100);nosound();break;
default:break;
}
}
else if(key1=='i'||key1=='I')
{ key=getch();
switch(key)
{
case 'A':
case 'a':down(100,110);sound(262);delay(100);nosound();break;
case 'S':
case 's':down(165,110);sound(296);delay(100);nosound();break;
case 'D':
case 'd':down(230,110);sound(329);delay(100);nosound();break;
case 'F':
case 'f':down(295,110);sound(349);delay(100);nosound();break;
case 'J':
case 'j':down(360,110);sound(392);delay(100);nosound();break;
case 'K':
case 'k':down(425,110);sound(440);delay(100);nosound();break;
case 'L':
case 'l':down(490,110);sound(493);delay(100);nosound();break;
default:break;
}
}
else if(key1=='o'||key1=='O')
{ key=getch();
switch(key)
{
case 'A':
case 'a':down(100,110);sound(523);delay(100);nosound();break;
case 'S':
case 's':down(165,110);sound(587);delay(100);nosound();break;
case 'D':
case 'd':down(230,110);sound(659);delay(100);nosound();break;
case 'F':
case 'f':down(295,110);sound(698);delay(100);nosound();break;
case 'J':
case 'j':down(360,110);sound(784);delay(100);nosound();break;
case 'K':
case 'k':down(425,110);sound(880);delay(100);nosound();break;
case 'L':
case 'l':down(490,110);sound(987);delay(100);nosound();break;
default:break;
}
}
else if(key1='p'||key1=='P')
{ key=getch();
switch(key)
{
case 'A':
case 'a':down(100,110);sound(1045);delay(100);nosound();break;
case 'S':
case 's':down(165,110);sound(1174);delay(100);nosound();break;
case 'D':
case 'd':down(230,110);sound(1318);delay(100);nosound();break;
case 'F':
case 'f':down(295,110);sound(1396);delay(100);nosound();break;
case 'J':
case 'j':down(360,110);sound(1568);delay(100);nosound();break;
case 'K':
case 'k':down(425,110);sound(1760);delay(100);nosound();break;
case 'L':
case 'l':down(490,110);sound(1976);delay(100);nosound();break;
default:break;
}
}
}
cleardevice();
outtextxy(200,200,"Really exit?");
if( (key2=getch())=='n'||(key2=getch())=='N')
{p=0;key=' ';}
else break;
}
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -