《授课ANT日期2010526》由会员分享,可在线阅读,更多相关《授课ANT日期2010526(21页珍藏版)》请在金锄头文库上搜索。
1、授课ANT日期2010526Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望授課內容BEEP播放音樂 use System播放音樂 use PlaySound簡易使用windows.hMessageBoxAbout BEEP最簡單的警示音,利用ASCII裡的基本設定。#include #include #include int main() printf(%c,7);Sleep(1000); printf(%c, a ); return 0 ;BEEP函式C除了可利用 printf(
2、“%c”, a );產生 beep單純一聲外,尚可利用 Beep 指令來完成單音的曲子、音階。運用windows.h裡的函式Beep(int dwFreq, int dwDuration);第一個參數dwFreq為音階頻率第二個參數dwDuration為延遲時間可依個人需求自訂延遲時間來分別判斷一拍及半拍. ex : 600 為一拍 = 300 便是半拍.小範例 ex10-1-1這是一個利用蜂鳴器發出簡易音階的小範例。 切記:請在無人時實作,因為真的很吵。 小蜜蜂範例 ex10-1-2 #include#includeint main()int row,col;int voice164=700
3、,600,600,0,650,550,550,0,500,550,600,650,700,700,700,0,700,600,600,0,650,550,550,0,500,650,700,700,600,0,0,0,550,550,550,550,550,600,650,0,600,600,600,600,600,650,700,0,700,600,600,0,650,550,550,0,500,600,700,700,500,0,0,0 ;int tempo164=1,1,2,0,1,1,2,0,1,1,1,1,1,1,2,0,1,1,2,0,1,1,2,0,1,1,1,1,4,0,0,0
4、,1,1,1,1,1,1,2,0,1,1,1,1,1,1,2,0,1,1,2,0,1,1,2,0,1,1,1,1,4,0,0,0;for(row=0; row16; row+) for(col=0; col “Compiler and debugger settings” - 左欄“Global compiler settings” - “Linker settings”按add並將此lib檔加入。使用PlaySound的事前準備(續)做完這動作後,還必須在程式中加入#pragma comment(lib,“winmm.lib”)#include #include 注意include時,win
5、dow.h要放在mmsystem.h之上不然會有錯誤產生。但是此函式目前只能播放.wav格式的聲音檔PlaySound此函式的第三個參數為播放標誌,可有下列的選擇:SND_FILENAME pszSound參數指定了WAVE檔名SND_SYNC 做同步播放,在播放完後才返回SND_ASYNC 做非同步播放,函數在開始播放後立即返回SND_LOOP 重複播放聲音,但必須與SND_ASYNC同時使用SND_NODEFAULT 不播放如果沒有聲音的音效,如果沒使用則當發現 沒有聲音可撥放時會撥放音效。SND_PURGE 停止所有與調用任務有關的聲音。若參數pszSound 為NULL,就停止所有的聲
6、音,否則停止 pszSound 指定的聲音。詳情參考 http:/.tw/43298441_d.html第三個參數在使用時可以使用” | ”組合函式的功能。如SND_FILENAME | SND_ASYNC 表示指定了第一個參數為播放的檔案且做非同步播放。範例 ex10-2注意音樂檔名在輸入時,請記得要輸入完整的位址另外參數中的路徑使用兩個連續的反斜杠轉義代表一個反斜杠。簡易windows.h使用 - MessageBox我們為了要讓程式看起來有點變化,可用messagebox產生一個對話方塊。當然,它會有自己的標題、 文字訊息及按鍵鈕等。使用很簡單,如下#includeint main()
7、MessageBox(NULL , “Hello World” , “ ,MB_OK|MB_ICONASTERISK); return 0 ;MessageBox格式如下:int MessageBox(HWND hWnd , LPCTSTR lpText , LPCTSTR lpCaption , UNIT uType)四個參數分別是:1) HWnd :父窗口的控制碼。2) LpText :想要顯示的文字字串的指標。3) LpCaption :對話方塊標題字串的指標。4) UType :顯示在對話方塊上的小圖示的類型。詳細資料參考 http:/ 的圖示。關於return值,如果messageb
8、ox有Cancel按鍵(ex. MB_OKCANCEL,表示式窗上有OK與Cancel按鍵),則按下它的回傳值會是IDCANCEL,另外如果是按鍵盤上的Esc鍵也會回傳IDCANCEL。按鍵類型與圖示類型請參考上頁連結。範例 ex10-3利用messagebox的回傳值,在主程式執行下一步的動作。對應到按取消鍵,則回傳IDCANCEL,而重試則是IDRETRY。 複習kbhitKbhit()的使用在於判斷是否有按按鍵。從系統來看就是說,此函式在於判斷暫存器buffer,是否有資料。當我們按鍵盤按鍵時,電腦會將按鍵字元存於keyboard buffer內,而kbhit如果判斷buffer內有資料
9、則回傳非 0的值,無資料則回傳 0 。注意:當使用kbhit()後,並未使用getch()函式的話,buffer內的資料會一直存在,再下一次按按鍵時會繼續儲存,直到buffer滿為止,因此往後的kbhit()持續回傳 1 。複習kbhit(續)因此從下面程式就可以知道瞭解問題。Lab 10簡易wav播放器透過本程式可讓使用者簡易的播放與更換背景音樂,本程式共有三種音樂讓使用者自行選擇。 流程 使用者一開始(1)試聽 (2)離開在選擇試聽後, 出現現有的歌單, 並選擇。 在選擇某一音樂後,使用者有兩種選項(a)試聽秒數 (b)任意, 在(a)中給予試聽的秒數,在(b)中則提供歌曲播放不中斷直到按
10、到鍵盤任一按鍵為止。當歌曲非意外性停止或中斷, 也就是秒數到了或者選(b)的人按了鍵盤則回到最初選擇(1)試聽 (2)離開 Lab 10解釋首先創建一txt文件檔,內含歌曲名稱,為求方便,歌曲名由助教定義,避免作業繳交時上傳檔案過大,作業上傳時不需要上傳音樂檔。同時歌曲一律放在C槽底下,其相對應的位址將會是 C:blacksky.wav C:OhYeah.wav C:family.wav歌單檔名為song,檔案型態是txt,其中共有三筆資料由於歌曲檔案很大轉檔後每個約為40MB,故在程式撰寫時,測試程式時請自行找尋wav音樂檔,並命名為歌單的名稱,位置放置C槽底下,做測試。另外實驗室提供winmm.lib檔