资源描述:
《西安交通大学创新实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、西安交通大学创新实验报告课程C语言程序设计第1页共6页系别航空航天学院实验日期2004年10月10日专业班级飞行器制造实验报告日期2004年12月15日姓名郭坚学号03171022报告退发(订正、重做)教师审批签字一.项目名称模拟电子琴二.开发背景:今年开了C语言课程,原来没有接触过计算机编程的我,对他有一种莫名的好奇,又由于今年一门选修课是C++builder程序设计,又是一门计算机编程课,使我对计算机编程更感兴趣了,刚好C语言有一个创新试验,给了我一个机会,借这个机会,加上自己对音乐的一点爱好,便萌发了用C++builder语言编一个电子琴的想法,得到了杨琦老
2、师的大力支持,便有了这个“电子琴”。三.技术路线或工作原理:采用的软件及开发平台是C++Builder6.0用了C++Builder6.0中的键盘事件,使每一个音在键盘上都有一个键与之对应,在按下键的时候,发出相应的声音,同时在界面上配有一定的动画。该电子琴每一个音都与键盘上的一个键对应,按一个键,就会发出一个与之对应的音。现将键盘对应的音说明如下;考虑到一般的音乐只需要少量低音,中音和高音,所以,本电子琴采用了18个音,即低音4567中音1234567高音1234567在键盘上,他们对应的键分别是低音Q W E R中音1234567高音UIOPJKL四.算法描述
3、(程序部分源码或伪代码)该程序具体算法如下void__fastcallTForm1::FormKeyDown(TObject*Sender,WORD&Key,TShiftStateShift){switch(Key){case'Q':{this->MediaPlayer1->FileName="#4好.WAV";this->MediaPlayer1->Open();this->MediaPlayer1->Play();Graphics::TBitmap*Bitmap1=newGraphics::TBitmap();Bitmap1->LoadFromFile("低因
4、4.bmp");Canvas->Draw(10,60,Bitmap1);break;}………void__fastcallTForm1::FormKeyUp(TObject*Sender,WORD&Key,TShiftStateShift){switch(Key){case'Q':{this->MediaPlayer1->Close();Graphics::TBitmap*Bitmap1=newGraphics::TBitmap();Bitmap1->LoadFromFile("4%.bmp");Canvas->Draw(10,60,Bitmap1);break;}
5、………void__fastcallTForm1::FormPaint(TObject*Sender){Graphics::TBitmap*Bitmap1=newGraphics::TBitmap();Bitmap1->LoadFromFile("1.bmp");Canvas->Draw(100,50,Bitmap1);Graphics::TBitmap*Bitmap2=newGraphics::TBitmap();Bitmap2->LoadFromFile("2.bmp");Canvas->Draw(140,50,Bitmap2);};………总共是void__fa
6、stcallTForm1::FormKeyDown(TObject*Sender,WORD&Key,TShiftStateShift)void__fastcallTForm1::FormKeyUp(TObject*Sender,WORD&Key,TShiftStateShift)void__fastcallTForm1::FormPaint(TObject*Sender)三种格式的语言五.实验结果实验结果程序起来会出现下面的结果按下键盘上3键,会出现下面的结果,同时发出中音3抬起键盘上3键,会出现下面的结果,同时中音3发声停止其他键是一样,即按一个键,对应的数字就
7、会变亮,同时会发出对应的一个音,抬起后,对应数字回到原来的样子,同时发声停止。六.测试分析:刚开始用的是按钮设计,不太令人满意,因为那只能发声,而无法与动画同时,而且,发出一个音后,无法将其停止。后来卫老师建议我用键盘事件,效果不错。于是就选用了键盘上18个比较顺手的键,每一个键对应一个音,同时,对应一组动画。程序是在window2000下编好的,但是在windowXP下测试比在window2000效果好,主要是在window2000下程序反应时间太长,显得有点断断续续的,在windowXP下,键盘事件中的Keydown和Keyup反应时间短,几乎感觉不出来,一按
8、下键,就会