搜尋
首頁微信小程式小程式開發分享控制台中的鋼琴發音小程序

想一下,平常那些好聽的音符在程式中怎麼實現呢?這個是不是很有意思!如果我們自己可以做一個小程式來模擬音樂中七個音符的發音,你是否能夠做到的?

接下來,我們就一起去看看這個神奇的聲音的來源。 。 。

首先,我們建造一個控制台的專案。這個程式的核心是怎麼讓系統發音,這就用到了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 &#39;1&#39;:
                    Console.Beep(fre, 300);//第一个参数指定声音的频率,第二个参数指定声音的持续时间
                    Console.BackgroundColor = ConsoleColor.Blue;
                    Console.Clear();
                    break;
                case &#39;2&#39;:
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.Cyan;
                    Console.Clear();
                    break;
                case &#39;3&#39;:
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.Green;
                    Console.Clear();
                    break;
                case &#39;4&#39;:
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.Red;
                    Console.Clear();
                    break;
                case &#39;5&#39;:
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.Yellow;
                    Console.Clear();
                    break;
                case &#39;6&#39;:
                    Console.Beep(fre, 300);
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Clear();
                    break;
                case &#39;7&#39;:
                    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 != &#39;q&#39;)//如果输入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();//将记录清空
                }

            }

        }


#

以上是分享控制台中的鋼琴發音小程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境