Week10
(1) 主題: 聲音(音效、音樂)
(2) 實作: 播放聲音
(3) 實作: CMP3_MCI.h 物件
(4) 複習教過的內容 (下週教 3D 模型)
(5) 補充檔如何搬家!!!
#include <windows.h>
int main()
{///播放聲音("檔名.wav",空指標, 要等待同步)
///檔案要放在 (in C:\Users\Administrator\Desktop\freeglut\bin) 目標路徑
PlaySound("do.wav", NULL, SND_SYNC);
PlaySound("re.wav", NULL, SND_SYNC);
PlaySound("mi.wav", NULL, SND_SYNC);
PlaySound("fa.wav", NULL, SND_SYNC);
PlaySound("so.wav", NULL, SND_SYNC);
}///太慢了..... 每個wav檔長度: 5秒
2.DO~RE~MI~
#include <windows.h> #include <stdio.h> int main() {///播放聲音("檔名.wav",空指標, 不等待同步) ///檔案要放在 (in C:\Users\Administrator\Desktop\freeglut\bin) 目標路徑 while(1){ char c = getchar(); if (c=='1') PlaySound("do.wav", NULL, SND_ASYNC); if (c=='2') PlaySound("re.wav", NULL, SND_ASYNC); if (c=='3') PlaySound("mi.wav", NULL, SND_ASYNC); if (c=='4') PlaySound("fa.wav", NULL, SND_ASYNC); if (c=='5') PlaySound("so.wav", NULL, SND_ASYNC); } /// 需要按"ENTER"鍵 }
#include <windows.h>
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void keyboard( unsigned char key, int x, int y)///TODO3
{///TODO3
if( key== '1' ) PlaySound("do.wav", NULL , SND_ASYNC );///TODO3
if( key== '2' ) PlaySound("re.wav", NULL , SND_ASYNC );///TODO3
if( key== '3' ) PlaySound("mi.wav", NULL , SND_ASYNC );///TODO3
} ///不需要按ENTER了!!
int main(int argc, char** argv)
{
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
glutCreateWindow("Week10 Sound 07361092");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard); ///TODO3
glutMainLoop();
}
4.人家寫的程式(可以放MP3當背景音樂了!!)
5.放MP3~還可以DOREMI~
#include <windows.h>
#include <GL/glut.h>
#include "CMP3_MCI.h" ///TODO5: .h檔案要放在專案目錄 week10_sound
CMP3_MCI mp3; ///TODO5: 宣告一個變數 (MP3的變數)
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void keyboard( unsigned char key, int x, int y)///TODO3
{///TODO3
if( key== '1' ) PlaySound("do.wav", NULL , SND_ASYNC );///TODO3
if( key== '2' ) PlaySound("re.wav", NULL , SND_ASYNC );///TODO3
if( key== '3' ) PlaySound("mi.wav", NULL , SND_ASYNC );///TODO3
if( key== '4' ) PlaySound("fa.wav", NULL , SND_ASYNC );///TODO3
if( key== '5' ) PlaySound("so.wav", NULL , SND_ASYNC );///TODO3
}
int main(int argc, char** argv)
{
mp3.Load("music.mp3"); ///TODO5: 檔案放執行目錄...\freeglut\bin
mp3.Play(); ///TODO5 :播放
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
glutCreateWindow("Week10 Sound 07361092");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard); ///TODO3
glutMainLoop();
}
6.背景放MP3~鍵盤可以DOREMI~滑鼠還可以放音效~
#include <windows.h>
#include <GL/glut.h>
#include "CMP3_MCI.h" ///TODO5: .h檔案要放在專案目錄 week10_sound
CMP3_MCI mp3; ///TODO5: 宣告一個變數 (MP3的變數)
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void keyboard( unsigned char key, int x, int y)
{
if( key== '1' ) PlaySound("do.wav", NULL , SND_ASYNC );
if( key== '2' ) PlaySound("re.wav", NULL , SND_ASYNC );
if( key== '3' ) PlaySound("mi.wav", NULL , SND_ASYNC );
if( key== '4' ) PlaySound("fa.wav", NULL , SND_ASYNC );
if( key== '5' ) PlaySound("so.wav", NULL , SND_ASYNC );
}
void mouse( int button, int state, int x, int y)///TODO6
{///TODO6
if( state==GLUT_DOWN ) PlaySound("shot.wav", NULL , SND_ASYNC );///TODO6
}
int main(int argc, char** argv)
{
mp3.Load("music.mp3"); ///TODO5: 檔案放執行目錄...\freeglut\bin
mp3.Play(); ///TODO5 :播放
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
glutCreateWindow("Week10 Sound 07361092");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);///TODO6
glutMainLoop();
}
7.背景放MP3~鍵盤可以DOREMI~滑鼠還可以放多重音效~
#include <windows.h>
#include <GL/glut.h>
#include "CMP3_MCI.h" ///TODO5: .h檔案要放在專案目錄 week10_sound
CMP3_MCI mp3; ///TODO5: 宣告一個變數 (MP3的變數)
CMP3_MCI shot1,shot2,shot3; ///TODO7
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot(0.3);
glutSwapBuffers();
}
void keyboard( unsigned char key, int x, int y)
{
if( key== '1' ) PlaySound("do.wav", NULL , SND_ASYNC );
if( key== '2' ) PlaySound("re.wav", NULL , SND_ASYNC );
if( key== '3' ) PlaySound("mi.wav", NULL , SND_ASYNC );
if( key== '4' ) PlaySound("fa.wav", NULL , SND_ASYNC );
if( key== '5' ) PlaySound("so.wav", NULL , SND_ASYNC );
}
void mouse( int button, int state, int x, int y)///TODO6
{///TODO6
if( state==GLUT_DOWN && button==GLUT_LEFT_BUTTON ) shot1.Play();///TODO7
if( state==GLUT_DOWN && button==GLUT_MIDDLE_BUTTON ) shot2.Play();///TODO7
if( state==GLUT_DOWN && button==GLUT_RIGHT_BUTTON ) shot3.Play();///TODO7
}
int main(int argc, char** argv)
{
shot1.Load("1.wav"); shot2.Load("2.wav"); shot3.Load("3.wav"); ///TODO7
mp3.Load("music.mp3"); ///TODO5: 檔案放執行目錄...\freeglut\bin
mp3.Play(); ///TODO5 :播放
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
glutCreateWindow("Week10 Sound 07361092");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);///TODO6
glutMainLoop();
}
--------------------------------------
檔案搬家!!!
把專案檔.cbp 開啟 ,依照圖片操作,把檔案目錄改成 "."
並且把freeglut內的.dll檔,完整複製到你的專案檔裡面~











沒有留言:
張貼留言