美文网首页C语言
用C语言弹小星星

用C语言弹小星星

作者: 不知名小号 | 来源:发表于2017-11-04 14:31 被阅读311次

    早上起来看到一个小伙伴的代码,用C语言程序播放出小星星。原理是利用Windows.h头文件里的Beep函数发出特定频率的声音。首先找到节奏所对应的频率,然后做成一个数组,根据曲子将对应的下标的元素作为参数,传到Beep函数。
    然后我说,加上getch函数就可以拿来弹琴了啊。于是他实现了,我也写了一个小程序。

    代码如下

    #include <Windows.h>
    #include <conio.h>
    #include <stdio.h>
    int main(int argc, char const *argv[])
    {
        char c='c';
        int i,j;
        int m[] = { 0, 523, 587, 659, 698, 784, 880, 932,1046,1175};
        int s[] = { 1, 1, 5, 5, 6, 6, 5, 4, 4, 3, 3, 2, 2, 1 };
        int t[] = { 300, 300, 300, 300, 300, 300, 350, 300, 300, 300, 300, 300, 300, 300 };
        int a='1'-1;
    
        do{
            printf("按1播放小星星\n按2通过键盘数字发出相应的声调\n按其他任意键退出:\n");
            scanf("%d",&j);
            getchar();
            switch(j)
            {
                case 1:
                    for(i=0;i<14;i++)
                    {
                        Beep(m[s[i%14]], 300);
                        Sleep(270);
                        if(i==6)
                            Sleep(270);
                    }
                    break;
                case 2:
                    printf("在弹奏时可以按0退出\n");
                    while((i=getch()-a)!=0)
                    {
                        Beep(m[i], 300);
                    }
                    break;
                default:
                    c='0';
                    break;
            }
            if(c=='c') printf("按c继续,任意键退出:\n");
        }while(scanf("%c",&c)&&c=='c');
        return 0;
    }
    
    

    相关文章

      网友评论

        本文标题:用C语言弹小星星

        本文链接:https://www.haomeiwen.com/subject/lxifmxtx.html