(1) 主題 : 聲音/音效.音樂
(2) 實作 : PlaySound(), CMP3_MCI.h
(3) 鍵盤鋼琴、射擊遊戲
(4) 複習貼圖+TRT、下周小考
實作1 射擊遊戲
(1) 至moodle上課用的軟體中下載lesson32.zip檔案並解壓縮
(2)點開Lesson32.exe即可開始體驗射擊遊戲
實作2 加入第一個聲音
(1) 開啟GLUT project並完成freeglut正常程序

(2)在開啟的檔案中加入播放聲音的程式
程式碼 :
#include <mmsystem.h>///使用外掛多媒體系統
PlaySound("Shot.wav",NULL,SND_ASYNC);///呼叫播放聲音
(3)將剛剛下載Lesson32中Data裡的Shot.wav檔案複製並移至freeglut的bin中
(4) 即可播放聲音
實作3 加入兩個聲音(同步、不同步)
(1)上網搜尋wav 下載喜歡的聲音,並將檔案放入freeglut的bin中
(2)加入程式碼
程式碼 :
#include <mmsystem.h>///使用外掛多媒體系統
PlaySound("Shot.wav",NULL,SND_ASYNC);///呼叫播放聲音(不等他)不同步 PlaySound("atchoum.wav",NULL,SND_SYNC);///呼叫播放聲音(等他)同步

(3)播放聲音時,會先將同步的播完後才顯示出結果
實作4 加入滑鼠動作
(1)加入滑鼠動作程式碼
當執行程式時持續播放的音效(atchoum.wav)會持續播放,直到按下滑鼠播放另一個聲音(Shot.wav)才會停止
程式碼 :
#include <mmsystem.h>///使用外掛多媒體系統
void mouse(int button,int state,int x,int y)
{
if(state==GLUT_DOWN)PlaySound("Shot.wav",NULL,SND_ASYNC);
}
PlaySound("atchoum.wav",NULL,SND_ASYNC|SND_LOOP);///呼叫播放聲音 持續放
glutMouseFunc(mouse);///mouse事件
實作5 鋼琴鍵盤

(1)當按下1234567時會個別播放出不同音階
先至moodle下載七個音的檔案,並放入freeglut的bin中
程式碼 :
#include <mmsystem.h>
case '1':PlaySound("Do.wav",NULL,SND_ASYNC);
break;
case '2':PlaySound("Re.wav",NULL,SND_ASYNC);
break;
case '3':PlaySound("Mi.wav",NULL,SND_ASYNC);
break;
case '4':PlaySound("Fa.wav",NULL,SND_ASYNC);
break;
case '5':PlaySound("Sol.wav",NULL,SND_ASYNC);
break;
case '6':PlaySound("La.wav",NULL,SND_ASYNC);
break;
case '7':PlaySound("Si.wav",NULL,SND_ASYNC);
break;
實作6 音效配合輸入
(1) 開啟 Console applcation project
(2) 輸入程式碼,並將音效檔放入project中
程式碼 :
#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
int main()
{
PlaySound("atchoum.wav",NULL,SND_SYNC);///等他
printf("Hello World\n");
}
(3) 音效播放結束後會印出Hello World
(4) 輸入後才會停止音效
程式碼 :
#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
int main()
{
PlaySound("atchoum.wav",NULL,SND_ASYNC);///不等他
printf("Hello World\n");///立馬執行
int n;
scanf("%d",&n);///等輸入完聲音才停止
}












沒有留言:
張貼留言