当前位置:首页站长学院后端开发分享控制台中的钢琴发音小程序
企业营销,就选知企PROSAAS

分享控制台中的钢琴发音小程序

想一下,平时那些好听的音符在程序中怎么实现呢?这个是不是很有意思呀!如果我们自己可以做一个小程序来模拟音乐中七个音符的发音,你是否能够做的到?

接下来,我们就一起去看看这个神奇的声音的来源。。。

首先,我们建一个控制台的项目。这个程序的核心是怎样让系统发音,这就用到了Console类中的Beep()这个方法,它呢,有两个参数,第一个是来控制声音的频率,第二个是来控制时间的长短。

还有一个方法是ReadKey(),它呢,每次读一个字符,它有一个bool型参数,用来控制按下的键是否显示在控制台窗口中。

其中,比较有意思的是,我们还可以对输入的音符进行记录,用于录制我们自己刚刚弹的音乐。这里呢,我们用到了timespan 的类型  ,用来计算时间间隔,还有用到了线程的停顿(Thread.Sheep)。

下面呢,是整个程序的代码,以供参考。

  /// <summary>
        /// 获取声音及改变背景颜色
        /// </summary>
        /// <param name="i"></param>
        static void Sound(int i)
        {
            int fre=(Convert.ToInt32(i) + 13) * 37;
            switch (i)
            {
                case '1':
                    Console.Beep(fre, 300);//第一个参数指定声音的频率,第二个参数指定声音的持续时间
                    Console.BackgroundColor = ConsoleColor.Blue;
                    Console.Clear();
                    break;
                case '2':
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.Cyan;
                    Console.Clear();
                    break;
                case '3':
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.Green;
                    Console.Clear();
                    break;
                case '4':
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.Clear();
                    break;
                case '5':
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.Yellow;
                    Console.Clear();
                    break;
                case '6':
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Clear();
                    break;
                case '7':
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.Blue;
                    Console.Clear();
                    break;
                default:
                    break;
            }
        }
        //该类定义记录输入的字符以及时间间隔
        class LL
        {
            public char c;//字符
            public DateTime d;//时间间隔
        }
        static void Main(string[] args)
        {
            Console.SetWindowSize(100,30);
            List<LL> record = new List<LL>();
            while (true)
            {
                ConsoleKeyInfo cki = Console.ReadKey(true);
                char i = cki.KeyChar;
                
                if (i != 'q')//如果输入q,则开始按录制的播放
                {
                    LL l = new LL();
                    l.c = i;
                    l.d = DateTime.Now;
                    record.Add(l);
                    Sound(i);
                }
                else
                {
                    for (int k = 0; k < record.Count;k++ )
                    {
                        
                        TimeSpan tspan;
                        if (k != 0)//如果是第一个,则计算时间间隔
                        {
                            tspan=record[k].d - record[k-1].d;//计算输入的时间间隔
                            Console.WriteLine(tspan);
                            Thread.Sleep(tspan);//将当前线程阻塞指定的时间。
                        }
                        Sound(record[k].c);
                    }
                    record.Clear();//将记录清空
                }

            }

        }

以上就是分享控制台中的钢琴发音小程序的详细内容,更多请关注知企PROSAAS其它相关文章!

温馨提示:

文章标题:分享控制台中的钢琴发音小程序

文章链接:https://ceshi.prosaas.cn/17660.html

更新时间:2018年05月10日

声明: 本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:973664285@qq.com我们将第一时间处理! 资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。 所有资源仅限于参考和学习,版权归原作者所有,更多请阅读知企PROSAAS协议

给TA打赏
共{{data.count}}人
人已打赏
后端开发

微信小程序实现共用变量值的方法介绍

2018-5-10 14:29:42

后端开发

利用组件开发微信小程序日历的详细方法

2018-5-10 15:05:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索