一架小钢琴——图形界面与发声技术的简单应用

一架小钢琴——图形界面与发声技术的简单应用 发表日期:2004年7月17日 作者:林奕伟 已经有2975位读者读过此文 /* * Super Piano, Version 1.0 * Compiled by TCC.EXE * Coding Enviroment: Win-TC 1.72 * Written by Lin Yiwei,from ZJU * Date: 2004-7-17 */ #include #include #include #include #define closegr closegraph #define KEY_WIDTH 60 #define KEY_HEIGHT 280 #define s 8051 #define d 8292 #define f 8550 #define g 8807 #define h 9064 #define j 9322 #define k 9579 #define ESC 283 /*function's prototype*/ void initgr() { int gd=DETECT,gm=0; registerbgidriver(EGAVGA_driver);/*register BGI driver */ registerbgifont(triplex_font); /*register BGI font*/ registerbgifont(small_font); registerbgifont(sansserif_font); registerbgifont(gothic_font); initgraph(&gd,&gm,""); } /*initialize the graphic*/ 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,DARKGRAY); bar(x,y+KEY_HEIGHT-13,x+KEY_WIDTH,y+KEY_HEIGHT); } /*the key being pressed*/ 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); } /*the key being release*/ void start() { int i=0; initgr(); /* initialize the BGI */ setbkcolor(LIGHTGRAY); /*set the background*/ settextstyle(4,0,5); setcolor(BLUE); outtextxy(170,40,"SUPER PIANO"); setcolor(RED); outtextxy(172,42,"SUPER PIANO"); setcolor(YELLOW); outtextxy(174,44,"SUPER PIANO"); setcolor(GREEN); outtextxy(176,46,"SUPER PIANO"); /*this is the title*/ 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-s,2-d,3-f,4-g,5-h,6-j,7-k,Quit-Esc"); setcolor(BLUE); outtextxy(215,440,"All Rights Reversed @ 2004-7"); } main() { int i=0; int key=0; start(); while(key!=ESC) { for(i=0;i<7;i++) { up(100+i*(KEY_WIDTH+5),110); } /*release the key first*/ key=bioskey(0); switch(key) { case s:down(100,110);sound(523);delay(3000);nosound();break; case d:down(165,110);sound(587);delay(3000);nosound();break; case f:down(230,110);sound(659);delay(3000);nosound();break; case g:down(295,110);sound(699);delay(3000);nosound();break; case h:down(360,110);sound(784);delay(3000);nosound();break; case j:down(425,110);sound(880);delay(3000);nosound();break; case k:down(490,110);sound(988);delay(3000);nosound();break; default:break; } } closegr(); } /*图形驱动和字体均注册(可生成完全独立的exe文件),因而要求有相应的图形驱动和字体连库*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值