- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言高级程序设计讲座3
C语言程序设计 2009-07-27 08:48 阅读156 评论0
字号: 大 中 小小
技术支持:29
经过上面两节课的学习,我们应该对C语言的图形设计有一定的了解,这节课我们主要讲一下C语言的发音,让你的程序声图并茂。
学习目标
?学习用C语言发声
?了解声音功能函数
?了解乐谱文件的制作
?能够结合图像与声音,让你的程序声图并茂
打破沉寂
首先我们来看一个源代码:
#define FALSE 0
#define TRUE 1
#includedos.h
main()
{
int snd; /* which sound to produce */
int cnt; /* number of times to repeat sound */
int note; /* Current note, when sweeping frequencies */
while (TRUE) {
/* Male Sure any previous sounds ave turned off. */
nosound();
/* Ask the user for which type of sounf*/
printf (1-siren;2-overload;3-whoop;4-phaser; 0-exit);
/* read the answer */
scanf (%d,snd);
/* if the answer it to exit ,do so. */
if (snd==0)
break;
/* Ask how many times to repast the sound. */
printf (Nunger of times:);
/* get the answer */
scanf(%d,cnt);
/* repeat the sound the number of time specifed */
while(cnt--){
/* swich on type of sound to produce*/
switch (snd)
{case 1:
/* do a siren:sweep up */
for (note=1000;note150;note-=10)
{
sound(note);
delay(20);
}
/* Sweep down */
for (;note1000;note+=10)
{
sound(note);
delay(20);
}
break;
case 2: /* do an overload. sweep up */
for (note=4000;note10;note-=10)
{
sound(note);
delay(70);
}
break;
case 3:
/* do a whoop: Sweep up*/
for (note=1000;note10;note-=10)
{
sound (note);
delay (200);
}
break;
case 4:
/* do a phaser: sweep down */
for (note=60; note2000;note+=10 )
{
sound (note);
delay(100);
}
break;
default:
/* unknown,ask a gain */
printf ( Invalid entry;try again \n);
break;
}
}
}
}
请大家打开TC运行该代码,程序重复的询问用户要产生哪一种声音。C语言调用两个库函数使PC发出声音:sound()打开声音;nosound()关闭声音。他们包含在dos.h中,格式如下:
void sound (unsigned int frequency);
void nosound (void);
其中frequency为频率,单位Hz。
为了使声音持续一段时间,我们还常用delay()函数,格式如下:
void delay(unsigned int milliseconde);
其中milliseconde表示所需延时的时间。
下面这个例子将不断发出各种频率的声音:
#includedos.h
#includestdio.h
#includestdlib.h
#includetime.h
main()
{
int i,j;
randomize();
while(!bioskey(1))
{
i=rand()*5000;
sound(i
文档评论(0)