用C语言弹小星星

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

代码如下

#include 
#include 
#include 
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语言弹小星星)