授课ANT日期2010526研究报告

上传人:yulij****0329 文档编号:138267788 上传时间:2020-07-14 格式:PPT 页数:21 大小:802KB
返回 下载 相关 举报
授课ANT日期2010526研究报告_第1页
第1页 / 共21页
授课ANT日期2010526研究报告_第2页
第2页 / 共21页
授课ANT日期2010526研究报告_第3页
第3页 / 共21页
授课ANT日期2010526研究报告_第4页
第4页 / 共21页
授课ANT日期2010526研究报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《授课ANT日期2010526研究报告》由会员分享,可在线阅读,更多相关《授课ANT日期2010526研究报告(21页珍藏版)》请在金锄头文库上搜索。

1、BEEP and Sound,授課:ANT 日期:2010/5/26,授課內容,BEEP 播放音樂 use System 播放音樂 use PlaySound 簡易使用windows.h MessageBox,About BEEP,最簡單的警示音,利用ASCII裡的基本設定。 #include #include #include int main() printf(%c,7); Sleep(1000); printf(%c, a ); return 0 ; ,BEEP函式,C除了可利用 printf(“%c”, a );產生 beep單純一聲外,尚可利用 Beep 指令來完成單音的曲子、音階。

2、 運用windows.h裡的函式 Beep(int dwFreq, int dwDuration); 第一個參數dwFreq為音階頻率 第二個參數dwDuration為延遲時間 可依個人需求自訂延遲時間來分別判斷一拍及半拍. ex : 600 為一拍 = 300 便是半拍.,小蜜蜂範例 ex10-1-2,#include #include int main() int row,col; int voice164=700,600,600,0,650,550,550,0,500,550,600,650,700,700,700,0, 700,600,600,0,650,550,550,0,500,6

3、50,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, 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;

4、row+) for(col=0; col4; col+) Beep(voicerowcol,temporowcol*350); return 0; ,播放音樂 use System,使用系統預設的播放程式。 它不是背景音樂,程式想繼 續執行必須要關閉播放器。,播放音樂 use PlaySound,PlaySound是用來播放音樂的一個windows.h函式。其函式格式如下: BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound); 參數意義 第一個參數可以是音效檔案名稱或內定的聲音別名或程式資源。 第二個參數只有當第一個參數是程

5、式資源時才可以用,通常為NULL。 第三個參數指定第一個參數是檔案名稱以及同步播放選項 如PlaySound( yoursound.wav , NULL, SND_FILENAME | SND_SYNC );,使用PlaySound的事前準備,由於此項函式較為特殊,因此必須使用到winmm.lib,屬於系統的LIB檔。在codeblocks底下,並沒有此lib檔。 首先必須下載winmm.lib (在壓縮檔裡有附。) 接著,將此lib檔放置到與.c檔同一個資料夾底下。 在codeblocks的”setting” - “Compiler and debugger settings” - 左欄“G

6、lobal compiler settings” - “Linker settings” 按add並將此lib檔加入。,使用PlaySound的事前準備(續),做完這動作後,還必須在程式中加入 #pragma comment(lib,“winmm.lib”) #include #include 注意include時,window.h要放在mmsystem.h之 上不然會有錯誤產生。 但是此函式目前只能播放.wav 格式的聲音檔,PlaySound,此函式的第三個參數為播放標誌,可有下列的選擇: SND_FILENAME pszSound參數指定了WAVE檔名 SND_SYNC 做同步播放,在播

7、放完後才返回 SND_ASYNC 做非同步播放,函數在開始播放後立即返回 SND_LOOP 重複播放聲音,但必須與SND_ASYNC同時使用 SND_NODEFAULT 不播放如果沒有聲音的音效,如果沒使用則當發現 沒有聲音可撥放時會撥放音效。 SND_PURGE 停止所有與調用任務有關的聲音。若參數pszSound 為NULL,就停止所有的聲音,否則停止 pszSound 指定的聲音。 詳情參考 .tw/43298441_d.html 第三個參數在使用時可以使用” | ”組合函式的功能。 如SND_FILENAME | SND_ASYNC 表示指定了第一個參數為播放的檔案且做非同步播放。,範

8、例 ex10-2,注意 音樂檔名在輸入時,請記得要輸入完整的位址 另外參數中的路徑使用兩個連續的反斜杠轉義代表一個反斜杠。,簡易windows.h使用 - MessageBox,我們為了要讓程式看起來有點變化,可用messagebox產生一個對話方塊。當然,它會有自己的標題、 文字訊息及按鍵鈕等。 使用很簡單,如下 #include int main() MessageBox(NULL , “Hello World” , “ ,MB_OK|MB_ICONASTERISK); return 0 ; ,MessageBox,格式如下: int MessageBox(HWND hWnd , LPCT

9、STR lpText , LPCTSTR lpCaption , UNIT uType) 四個參數分別是: 1) HWnd :父窗口的控制碼。 2) LpText :想要顯示的文字字串的指標。 3) LpCaption :對話方塊標題字串的指標。 4) UType :顯示在對話方塊上的小圖示的類型。 詳細資料參考 ,MessageBox(續),小範例中第四個參數MB_OK及MB_ICONASTERISK,分別表示有個OK的按鈕及有個 的圖示。 關於return值,如果messagebox有Cancel按鍵(ex. MB_OKCANCEL,表示式窗上有OK與Cancel按鍵),則按下它的回傳值會

10、是IDCANCEL,另外如果是按鍵盤上的Esc鍵也會回傳IDCANCEL。 按鍵類型與圖示類型請參考上頁連結。,範例 ex10-3,利用messagebox的回 傳值,在主程式執行下 一步的動作。 對應到按取消鍵,則 回傳IDCANCEL,而重 試則是IDRETRY。,複習kbhit,Kbhit()的使用在於判斷是否有按按鍵。從系統來看就是說,此函式在於判斷暫存器buffer,是否有資料。 當我們按鍵盤按鍵時,電腦會將按鍵字元存於keyboard buffer內,而kbhit如果判斷buffer內有資料則回傳非 0的值,無資料則回傳 0 。 注意:當使用kbhit()後,並未使用getch()

11、函式的話,buffer內的資料會一直存在,再下一次按按鍵時會繼續儲存,直到buffer滿為止,因此往後的kbhit()持續回傳 1 。,複習kbhit(續),因此從下面程式就可以知道瞭解問題。,Lab 10,簡易wav播放器 透過本程式可讓使用者簡易的播放與更換背景音樂,本程式共有三種音樂讓使用者自行選擇。 流程 使用者一開始(1)試聽 (2)離開 在選擇試聽後, 出現現有的歌單, 並選擇。 在選擇某一音樂後,使用者有兩種選項(a)試聽秒數 (b)任意, 在(a)中給予試聽的秒數,在(b)中則提供歌曲播放不中斷直到按到鍵盤任一按鍵為止。 當歌曲非意外性停止或中斷, 也就是秒數到了或者選(b)的人按了鍵盤則回到最初選擇(1)試聽 (2)離開,Lab 10解釋,首先創建一txt文件檔,內含歌曲名稱,為求方便,歌曲名由助教定義,避免作業繳交時上傳檔案過大,作業上傳時不需要上傳音樂檔。 同時歌曲一律放在C槽底下,其相對應的位址將會是 C:blacksky.wav C:OhYeah.wav C:family.wav 歌單檔名為song,檔案型態是txt,其中共有三筆資料 由於歌曲檔案很大轉檔後每個約為40MB,故在程式撰寫時,測試程式時請自行找尋wav音樂檔,並命名為歌單的名稱,位置放置C槽底下,做測試。 另外實驗室提供winmm.lib檔,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号