引言
從今天開始我們會進入2D的世界囉!
我們預計會製作一款平面地圖探索遊戲,
類似魔塔找鑰匙開門的小遊戲~
所以今天的程式會使用新的專案哦,大家記得創建新的專案
首先我們先來處理較為硬派的部分,也就是直接使用函式庫的部分啦,
我們先來處理音效的播放!
<windows.h>
標頭檔也可以做到聲音的播放
(其實是其子函式庫mmsystem.h提供,但這邊只要知道windows.h有包含就好)
但需要連結一些Library,以下將會教學如何設定。
創建新專案,加入main.c檔
這個我相信大家都很熟悉了,將會如下圖結果:
我們引入了標準輸入輸出,以及這次主要會使用到的"windows.h"。
連結winmm Library(此方法僅限CodeBlocks)
這個部分大家可能比較陌生,想要播放音樂的話,就需要這個Library輔助。
PlaySound函數
標頭檔、函式庫都處理好後,我們可以開始使用播放聲音的功能了,這個函數是PlaySound:
BOOL PlaySound(
LPCTSTR pszSound, // 不要想太多,這邊就是聲音檔案的路徑(相對)
HMODULE hmod, // 這邊一律填NULL,這次不會用到
DWORD fdwSound // 一些參數,例如是否循環播放? 等等。
);
稍微介紹一下第三個參數的幾個常用例子:
第三參數候選 | 功能 |
---|---|
SND_ASYNC | 非同步播放,也就是PlaySound一呼叫,就馬上return,但音樂繼續播放 |
SND_SYNC | 同步播放,必須等音樂播放完程式才會往下走 |
SND_LOOP | 循環播放,音樂會不斷重複播放,所以一定不能等音樂播完才return,設這個功能一定要搭SND_ASYNC |
SND_FILENAME | 代表第一個參數(音檔路徑)是音樂檔的檔案名稱 |
PlaySound還有個特點是,只能播放.wav檔案,推薦大家使用audacity軟體將音檔轉成.wav檔,再丟給PlaySound
範例
我們來做個範例,讓電腦發出第一個聲音吧!
先在專案資料夾中創建一個"musics/"資料夾
在"musics/"中放一個想要播放的.wav檔案
程式碼:
#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
// 播放放在執行檔所在資料夾的「musics」資料夾中的「open.wav」音檔
// 模式為「同步」,等音樂播完才往下執行,且第一參數是音檔檔名
PlaySound("musics/open.wav", NULL, SND_SYNC|SND_FILENAME); // 多個屬性用"|"隔開
getchar();
return 0;
}
我們明天來製作開頭BGM以及一些音效試試看~